Winsock TCP连接无限超时

时间:2011-07-13 21:35:10

标签: tcp winsock

我希望我的Winsock TCP connect()调用以无限超时阻塞。

问题: 1.我怎么能这样做?

  1. 从功能的角度来看,我上面提到的愿望正是我所需要的。从技术角度来看,这是一个坏主意吗?
  2. 谢谢你, 戴夫

2 个答案:

答案 0 :(得分:4)

如果您想要永远等待,请在connect超时时重试。

超时是TCP工作方式的基础。您可以调整机器的设置(例如:Which is the default TCP connect timeout in Windows?),但这不是一个好主意(影响所有TCP连接)。

答案 1 :(得分:2)

回答问题的第二部分:

  

从功能的角度来看,我上面提到的愿望正是如此   我需要。从技术角度看是否有任何理由   一个坏主意?

您只能通过写入来检测断开的TCP连接与未向您发送任何内容的连接之间的区别(请参阅this answer)。什么都不读可能意味着连接被破坏或没有任何东西被发送给你。超时对于检测(或强制)此类断开是有用的,以便释放资源。 (您也可以使用TCP Keep-alive来检测断开连接,但效果与超时非常相似。)

如果您计划使用的协议从您想要禁用超时的那一侧充分定期写入,这对您来说可能无关紧要,否则,您可能只是在您预期会发生某些事情的情况下结束从另一端永远(因为它可能突然断开)。