私は、クライアントアプリケーションを持っています。このアプリケーションは、サーバとの通信にアンマネージドDLLを使用しています。FIN_WAIT_2状態のソケットを閉じる(kill、release?)方法は?
すべてのネットワーク関連の操作は、アンマネージドdllの内部で行われます。 サーバーで多数の操作を行った後、クライアントはTCPポートを使い果たしています。 我々は「netstatの-an」を使用してnetwotkの状態をチェックすると、私たちは次のような結果を得る:クライアントが閉じられた後
...
TCP 192.168.11.55:56048 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56049 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56050 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56051 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56052 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56053 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56054 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56055 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56056 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56057 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56058 192.168.10.27:5000 FIN_WAIT_2
TCP 192.168.11.55:56059 192.168.10.28:5000 FIN_WAIT_2
TCP 192.168.11.55:56060 192.168.10.27:5000 FIN_WAIT_2
...
ポートのみが解放されます。
VSプロジェクトをデバッグモードで実行すると、ポートが不足することはありません。 しかし、リリースモードで実行中に、それが起こっています。
また、私はサーバーやクライアントのどちらのソースにもアクセスできません。
FIN_WAIT_2状態にあるポートを解放または強制終了する方法はありますか。
タイムアウトを最小値に設定すると助けになりましたが、あまり効果はありませんでした。最後に、クライアント側でTCP_NODELAYパラメータを設定することで問題を解決することができました。ありがとうございました。 – ulughbekula
Mac OS Xについてはどうですか? –