非阻塞连接超时

时间:2011-06-26 15:01:09

标签: c++ linux tcp

我正在执行非阻塞连接到服务器。

选择中使用什么适当的超时值来考虑服务器停机/忙碌?

P.S。

由于服务器已关闭或占线,连接可能会失败。

如果服务器关闭,我总是会以选择超时结束。

更有趣的情况是服务器忙。恕我直言1秒就足以进行TCP握手。如果连接服务器的时间太长,则与服务器的所有通信都将延迟。那么选择最长1秒是否合理决定等待?

3 个答案:

答案 0 :(得分:2)

数据包可能会丢失,在这种情况下,节点会在超时后重新发送它,因此请勿使用足以进行握手的值。你可以用tcpdump玩一下,断开连接(拔下以太网线),看看发生了什么。

10-20秒之类的东西应该没问题,但这取决于你的任务有多重要......

答案 1 :(得分:1)

几乎可以立即连接到服务器。我认为这可能有点主观,但几秒钟应该绰绰有余。对于最近的一些工作,我们使用了10秒,这已经抓住了我们所有的情况。

答案 2 :(得分:0)

这真的取决于你,但我想像10-20秒这样的时间是合理的时间。

Apache's default KeepAliveTimeout is 15 seconds,这是您可以使用的一个标准。