connect()が数回成功した後、connect()が3秒間ブロックされました。

connect()が数回成功した後、connect()が3秒間ブロックされました。

connect()サーバーに接続し、forループでサーバーを閉じるクライアントアプリケーションを作成しています。

これはブロックモードで行われ、一部の呼び出しは数千回の成功後約3秒間ブロックされるconnect()ことがわかりました。 tcpdumpを使用しましたが、いくつかの奇妙な結果が見つかりました。呼び出し後約3秒間SYNは送信されませんでした。connect()connect()connect()

どうしたの?

PS。私は64ビットUbuntu、カーネル3.0.0-13を使用しています。

ベストアンサー1

bindおそらく、電話する前に電話をかけていない可能性がありますconnect(これは正常な現象であり、これを行う理由はありません)。したがって、以前はconnect暗黙的なbind。ローカルポートの利用可能な範囲がなくなると、そのポートを待っている間にbindブロックが発生する可能性があります。最良の解決策は、実行したい作業によって異なります。詳しくは私のコメントをご覧ください。解決策を提案します。

おすすめ記事