connect() 多次成功后,connect() 阻塞了 3 秒

connect() 多次成功后,connect() 阻塞了 3 秒

我正在编写一个客户端应用程序,该应用程序connect()连接到服务器并在 for 循环中关闭它。

connect()是在阻塞模式下完成的,我发现一些connect()调用在数千次成功后会阻塞大约3秒connect()。我使用 tcpdump 并发现一些奇怪的结果:在我调用 后connect(),大约 3 秒没有发送 SYN。

发生了什么?

附言。我使用的是 64 位 Ubuntu,内核 3.0.0-13。

答案1

bind最有可能的是,您在打电话之前没有打电话connect(这是正常的,并且没有理由您应该这样做)。所以之前connect,有一个隐含的bind。如果本地端口的可用范围已用尽,则bind在等待端口时可能会发生阻塞。最好的解决方案取决于您想要做什么。请参阅我的评论,了解详细信息,我可以提出解决方法。

相关内容