草庐IT

keepalive-time

全部标签

linux - 没有 TIME_WAIT 连接,为什么?

如果我有sysctltw_reuse=0和tw_recycle=0,并且netstat没有报告任何TIME_WAIT连接,这意味着......?它是两个服务器之间的本地网络连接,A->B,A在netstat中与B有TIME_WAIT连接,但B与A没有。 最佳答案 只有关闭通信的连接端才能处于TIME_WAIT状态,见相关UNIXSocketFAQ时序图。RememberthatTCPguaranteesalldatatransmittedwillbedelivered,ifatallpossible.Whenyoucloseasoc

java - 奇怪的 SocketExceptions : connection reset and Connection timed out

我有一个JavaTCP服务器和一个AndroidTCP客户端。服务器等待请求,然后将50MB的数据发送到Android客户端(客户端通过循环数组读取并覆盖数据,因此数据不会保存在手机上。)一切正常,花花公子,但有时客户端会崩溃有了这个:java.net.SocketException:Connectiontimedout服务器得到这个:java.net.SocketException:connectionreset客户端循环读取,直到接收到所有数据(我允许它在一次调用中读取的最大数据是1.5MB。服务器发送如下:connectionSocket.getOutputStream().wr

linux - SO_KEEPALIVE 行为在 Linux 上默认启用?

我有一个使用TCP套接字用C语言编写的客户端/服务器应用程序。我想知道使用客户端套接字上启用的SO_KEEPALIVE选项的死服务器进程。我正在使用Linux。我将默认时间从2小时修改为10分钟。echo600>/proc/sys/net/ipv4/tcp_keepalive_time我使用setsockopt()在客户端套接字上启用了SO_KEEPALIVE。我故意杀死(kill-9)服务器进程,同时它正在向客户端发送数据。正如预期的那样,在10分钟超时(加上额外的探测时间)后,客户端套接字收到通知(read(scoket,...)返回零)。然而,令我惊讶的是,即使我在客户端套接字上

c# - 端口卡在 Time_Wait

我在C#中有一个TCP隧道。我需要打开和关闭隧道,这是我在服务器和客户端之间的应用程序。我正在使用它来关闭数据连接以测试另一个应用程序。我必须使用特定的端口。根据我等待重新连接的时间长短,在第二次、第三次、第n次连接上,我在绑定(bind)套接字时收到10048错误代码-“地址已在使用中”。关闭套接字时,我会执行ShutDown.Both和Close以清除端口,但是当我在命令提示符下执行netstat时,我仍然发现端口处于TIME_WAIT中。我还将套接字设置为无延迟。最后我试着做一个循环来检查端口的状态,但它以某种无限循环结束。我认为这是4分钟TIME_WAIT规则。我有一个显示ne

networking - 已发送 FIN 的 TCP 端点是否仍发送 keepalive?

发送FIN表示该端不会发送任何数据。但是它能发送TCPkeepalive吗?如果它可以那么它与“在FIN之后发送东西”的声明相矛盾,即使它是keepalive而不是数据。如果它不发送keepalive,它不会检测另一端是否消失了。例如:客户端发送FIN并返回ACK。服务器随后发送了一个丢失的重置。客户端可以检测到服务器已经离开的唯一方法是发送keepalive,这将通过重置进行响应,然后客户端关闭。这会发生吗? 最佳答案 根据RFC-1122:Keep-alivepacketsMUSTonlybesentwhennodataorac

python - 如何在 Twisted 中将 TCP Keepalive 与端点一起使用?

Twisted确实支持TCPKeepalive.但是我找不到在端点(客户端和服务器)上设置它们的简单方法。当前最佳做法是什么? 最佳答案 我看不出有什么方法可以通过API从端点干净地实现这一点。但是请查看twisted.internet.endpoints._WrappingProtocol的来源-您可以将您的端点设置为使用_WrappingFactory*,它会在建立连接时回调延迟。此时协议(protocol)上设置了传输,您可以调用setTcpKeepAlive。鉴于类名中的下划线,我会说这些是为了在内部使用,我不会依赖它们的接

ios - 是否可以在 Apple iOS 设备上激活 TCP keepalive

Apple设备===路由器===WiFi模块Apple设备(iPhone)正在通过TCP连接连接到WiFi模块端口2000。我想在Apple设备上激活TCPkeepalive数据包发送,以查明与WiFi模块的TCP连接何时丢失(模块已关闭)。我的直播设置CFReadStreamRefreadStream;CFWriteStreamRefwriteStream;CFStreamCreatePairWithSocketToHost(NULL,(CFStringRef)CFBridgingRetain(moduleIPaddress),port2000,&readStream,&writeS

c# - 如何修复 "a connection attempt failed because the connected party did not properly respond after a period of time ..."错误?

我正在用C#制作游戏,我想显示对手的进度(Action等)。所以我通过TCP协议(protocol)将游戏中的事件发送给对手。我已经在本地主机上尝试了我的应用程序并且它可以工作但是当我尝试使用我的外部地址以便通过Internet进行通信时我在类TcpInformer.Connect()中收到以下错误:aconnectionattemptfailedbecausetheconnectedpartydidnotproperlyrespondafteraperiodoftime,orestablishedconnectionfailedbecauseconnectedhosthasfaile

tcp - HAProxy 关闭长期存在的 TCP 连接,忽略 TCP keepalive

我已经配置了HAProxy(1.5.4,但我也尝试过1.5.14)以在TCP模式下平衡两个在5672端口上公开AMQP协议(protocol)(​​WSO2MessageBroker)的服务器。客户端通过HAProxy创建并使用与AMQP服务器的永久连接。我已经更改了客户端和服务器TCPkeepalive超时,设置net.ipv4.tcp_keepalive_time=120(CentOS7)。在HAProxy中,我将客户端/服务器超时设置为200秒(>120秒的保活数据包)并使用选项clitcpka。然后我启动了wireshark并嗅探了所有的tcp流量:在来自客户端的最后一个请求之

java - 使用 TCP KeepAlive 检测套接字断开连接

我正在开发一个通过TCP/IP托管第3方设备的服务器,并且一直在经历突然的连接断开(设备通过蜂窝连接)。我需要找到一种方法来检测断开连接,而无需将数据写入设备本身。我研究过使用TCP保活功能,但Java似乎不允许对保活操作的时间进行任何调整。有什么推荐的方法吗?我的简化套接字代码如下:publicclassTest2Socket{publicstaticvoidmain(String[]args){try{ServerSocketskt=newServerSocket(1111);SocketclientSocket=skt.accept();clientSocket.setKeepA