0

ローカルホストでソケットのオープンをテストするために、Java ライブラリの 1 つに次のロジックが表示されます。

 ServerSocket socket = new ServerSocket(port);
 socket.close();

私の質問は、データ パケットが送信されておらず、ソケットを開いた直後にソケットが閉じられた場合、このソケットは localhost で TIME_WAIT 状態になるのでしょうか? このような場合、アプリケーションが同じポートにバインドしようとすると、2MSL 値内で実行すると「アドレスは既に使用中のエラー」を引き起こす可能性がありますか?

上記のような小さなテスト プログラムを作成しましたが、このプログラムを実行した Linux マシンで netstat または ss を実行すると、このポートの TIME_WAIT がまったく表示されません。ソケットがデータ パケットの送信に使用されていない場合でも、ステート マシンは適用されるべきではありませんか?

4

1 に答える 1

1

TIME_WAIT は接続中の状態です。接続を作成していないため、 TIME_WAITに到達することはありません。

于 2016-10-18T11:06:12.477 に答える