0
私はローカルホスト上のソケットのオープンテストするためにJavaのLIBSのいずれかで次のロジックを見ています:localhostでServerSocketを開いてすぐに閉じるとTIME_WAITになりますか?
ServerSocket socket = new ServerSocket(port);
socket.close();
私の質問は何のデータパケットが送信されていないとソケットがある場合は、このソケットリードはローカルホスト上の状態をTIME_WAITするだろうですそれを開いた直後に閉じた?このような場合、アプリケーションが同じポートにバインドしようとすると、2MSL値内で完了した場合、「アドレスはすでに使用中です。エラー」が発生する可能性がありますか?
私は上記のような小さなテストプログラムを作成しましたが、このプログラムを実行したLinuxマシンでnetstatまたはssを実行すると、このポートのTIME_WAITはまったく表示されません。ソケットがデータパケットを送信するのに使用されていない場合でも、ステートマシンは適用されるべきではありませんか?
ソケットが決して 'CLOSED'状態から外れない場合、' CLOSED'状態に戻るために何もする必要はありません。 –
こんにちは@Damien_The_Unbeliever - 申し訳ありませんが、私はポイントを取得していません。上記の場合のソケットはTIME_WAITを通過するでしょうか? –
あなたが見ている特定のステートマシンダイアグラムがわからないのですが、[this one](http://www.tcpipguide.com/free/t_TCPOperationalOverviewandTCPFiniteStateMachineF-2.htm)と言ってください。ソケット*は 'CLOSED'状態で開始します。その後、いくつかの特定の遷移を経て 'ESTABLISHED'になり、' CLOSED'に戻る前に 'TIME_WAIT'で待っている特定の経路を下る必要があります。あなたは 'CLOSED'状態からソケットを移動するために何もしていないので、遷移は必要ありません。 –