Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改保持活动超时以检测断开的TCP连接_Java_C_Sockets_Tcp_Udp - Fatal编程技术网

Java 更改保持活动超时以检测断开的TCP连接

Java 更改保持活动超时以检测断开的TCP连接,java,c,sockets,tcp,udp,Java,C,Sockets,Tcp,Udp,我已经使用UDP很久了。但现在轮到TCP被我使用了。我想在MAC、Linux和Windows7操作系统的Java和C应用程序中使用TCP套接字 在使用UDP时,为了知道断开的连接,我跟踪了简单的最后一个数据包接收时间。如果假设节点A在5秒内没有从节点B接收到任何UDP数据包,则我认为连接已断开。当没有数据从A发送到B或从B发送到A时,A和B都会每秒向对方发送一个小的保持活动数据包(没有数据)。这可以防止在不发送任何数据时,连接被视为断开 所以,我想知道TCP中断开连接的检测是如何工作的。基本上,

我已经使用UDP很久了。但现在轮到TCP被我使用了。我想在MAC、Linux和Windows7操作系统的Java和C应用程序中使用TCP套接字

在使用UDP时,为了知道断开的连接,我跟踪了简单的最后一个数据包接收时间。如果假设节点A在5秒内没有从节点B接收到任何UDP数据包,则我认为连接已断开。当没有数据从A发送到B或从B发送到A时,A和B都会每秒向对方发送一个小的保持活动数据包(没有数据)。这可以防止在不发送任何数据时,连接被视为断开

所以,我想知道TCP中断开连接的检测是如何工作的。基本上,我想知道在读取或写入套接字时连接是否断开,并且仅在5秒内断开


<>我知道在抛出IO异常中java读写或返回-1/0,但是TCP在每个平台上考虑连接的时间有多长。如何更改此连接过期超时值?

无需等待TCP通知连接已断开。只需从套接字读取数据(使用
选择
并超时5秒),如果超时而不是接收数据包,则关闭套接字。您可以(有时是全局)更改TCP超时,但在这种情况下,只需将TCP设置为TCP,并让您的应用程序管理自己的心跳…@indiv我想在不发送/接收任何数据的情况下保持连接的活动状态。@indiv我想知道TCP连接在5秒内中断,如果TCP连接确实断开。您无法控制您的TCP连接。网络堆栈控制TCP连接,5秒后不会放弃连接。在我上面的评论中,我解释了如果你想要5秒钟的心跳,你必须做什么。如果不满意,你可以等待其他人回答。。。我不知道还能告诉你什么。@Huko TCP保持活力是操作系统的责任。使用Java无法影响这一点。例如,在窗口上,您没有工作TCP保持活动状态。