Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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
使用TCP-Java套接字的心跳协议的良好超时_Java_Sockets_Tcp_Timeout_Heartbeat - Fatal编程技术网

使用TCP-Java套接字的心跳协议的良好超时

使用TCP-Java套接字的心跳协议的良好超时,java,sockets,tcp,timeout,heartbeat,Java,Sockets,Tcp,Timeout,Heartbeat,我用Java实现了我自己的proto,它将通过TCP连接使用心跳信号,我也用它来传输消息和文件。 对于客户端,我使用阻塞套接字I/O。 这就是我计划的工作方式。。。 我将套接字超时设置为K秒,并使心跳保持在发送消息的间隔T内,以便T

我用Java实现了我自己的proto,它将通过TCP连接使用心跳信号,我也用它来传输消息和文件。 对于客户端,我使用阻塞套接字I/O。 这就是我计划的工作方式。。。 我将套接字超时设置为K秒,并使心跳保持在发送消息的间隔T内,以便T 心跳是服务器发送一个字符串,客户端应答另一个字符串

我不想浪费大量带宽,但如果超时时间太长,服务器可能会错误地判断客户端的状态

什么是好的K间隔?我想大概40秒


PS:字符串是ISO-8859-1中发送的8个字母,因此它的小数据

我不认为这里有一个通用的“正确”答案,它实际上取决于您的需要。您需要平衡带宽需求和让服务认为客户端仍然存在的成本。这些需求因应用程序而异。对于IM,您可能想在几秒钟内知道,但对于文件传输应用程序,几分钟可能是可以接受的。

我认为这里没有一个通用的“正确”答案,这实际上取决于您的需要。您需要平衡带宽需求和让服务认为客户端仍然存在的成本。这些需求因应用程序而异。对于IM,您可能想在几秒钟内知道,但对于文件传输应用程序,几分钟可能是可以接受的。

“K”在很大程度上取决于应用程序的特定流量配置文件(例如,应用程序数据传输的频率)和应用程序对连接丢失的容忍度(例如,接收器需要多快检测到连接丢失)。不幸的是,低开销和快速检测是相反的目标

这听起来像是您试图解决的问题。如果是这样,并且您不知道“半开放”这个术语,研究TCP“半开放”可能会为您提供一些有用的信息,如:

“K”高度依赖于应用程序的特定流量配置文件(例如,应用程序数据传输的频率)和应用程序对连接丢失的容忍度(例如,接收器需要多快检测到连接丢失)。不幸的是,低开销和快速检测是相反的目标

这听起来像是您试图解决的问题。如果是这样,并且您不知道“半开放”这个术语,研究TCP“半开放”可能会为您提供一些有用的信息,如:


如果是小数据,为什么要担心带宽?如果是小数据,为什么要担心带宽?