この呼び出しは非常に短い時間の後に戻るはずですが、一部のマシンでは、不可解にも1秒近くかかります。誰かがこの問題を見たことがありますか。ループバックアドレスを使用しているので、ネットワークは見えないはずです。
質問する
1060 次
1 に答える
0
問題は、おそらくウィンドウ ソケットの実装内のどこかにあります。OS の観点からは、呼び出しclosesocket
(またはCloseHandle
) は、ドライバーの「デバイス」オブジェクトを解放することと同等です。ほとんどのドライバーは、この要求を即座に (同期的に) 処理し、必要に応じて (潜在的な) 未処理の I/O をすべて中止します。ただし、「愚かな」ドライバーは、何かが完了するまでブロックする場合があります。
それが私がすることです:
- プログラムを (タスク マネージャーで) 終了してみてください。終了まで時間がかかりますか?(そうであれば、ドライバーによってロックされているようです)。
- ストリーム ソケット (TCP など) について話している場合は、
SO_DONTLINGER
オプションを使用してみてください。つまり、保留中のデータがすべてピアに送信されるまで待機しないように指定します。
于 2012-04-05T07:14:09.900 に答える