我希望我的Winsock TCP connect()调用以无限超时阻塞。
问题: 1.我怎么能这样做?
谢谢你, 戴夫
答案 0 :(得分:4)
如果您想要永远等待,请在connect
超时时重试。
超时是TCP工作方式的基础。您可以调整机器的设置(例如:Which is the default TCP connect timeout in Windows?),但这不是一个好主意(影响所有TCP连接)。
答案 1 :(得分:2)
回答问题的第二部分:
从功能的角度来看,我上面提到的愿望正是如此 我需要。从技术角度看是否有任何理由 一个坏主意?
您只能通过写入来检测断开的TCP连接与未向您发送任何内容的连接之间的区别(请参阅this answer)。什么都不读可能意味着连接被破坏或没有任何东西被发送给你。超时对于检测(或强制)此类断开是有用的,以便释放资源。 (您也可以使用TCP Keep-alive来检测断开连接,但效果与超时非常相似。)
如果您计划使用的协议从您想要禁用超时的那一侧充分定期写入,这对您来说可能无关紧要,否则,您可能只是在您预期会发生某些事情的情况下结束从另一端永远(因为它可能突然断开)。