2011-07-13 53 views
1

我想我的Winsock TCP连接()调用阻塞无限超时。Winsock TCP连接无限超时

问题: 1.我该怎么做?

  1. 从功能角度来看,我上面所说的愿望正是我所需要的。从技术角度来看,这是否是一个坏主意?

谢谢你, 戴夫

回答

2

为了回答你问题的第二部分:

从功能的角度看,我的上述愿望是什么 我需要的。有没有从技术角度来看这是一个坏主意,这将是 ?

您只能检测到断开的TCP连接和未向您发送任何内容的连接之间的差异(请参阅this answer)。什么都不读可能意味着连接被中断或者没有任何信息被发送给你。超时对于检测(或强制)这种断开连接非常有用,从而释放资源。 (您也可以使用TCP Keep-alive来检测断开连接,但效果非常类似于超时。)

如果您计划使用的协议从您希望禁用超时的一方经常写入,这对你来说可能无关紧要,否则,你可能只是最终陷入了一种情况,那就是你期待着永远来自另一端的东西(因为它可能突然间断开了)。

4

如果你想永远等待,只重试,如果出了connect倍。

超时对TCP的工作原理非常重要。您可以调整机器的设置(例如,参见Which is the default TCP connect timeout in Windows?),但这不是一个好主意(影响所有TCP连接)。