皆さん、
私の環境はUbuntu 12.04です。
これは、接続をリッスンしている私の TCP サーバー アプリケーションの擬似コードです。
while(true) {
int hConn = accept(hMain, NULL, NULL);
string s = readClient(hConn);
if (s == "quit") {
close(hConn);
}
}
サーバーの実行中に、ポート nnnn で localhost に telnet します。
$ telnet localhost nnnn
quit
Connection closed by foreign host.
$
サーバーは「quit」を受信すると、クライアント接続を閉じます。これにより、telnet クライアントが適切なメッセージで終了します。
ここまでは順調ですね。
ただし、netstat を実行すると、クライアント接続がまだ有効であることを確認できます。
接続が消えるまで数秒かかります。
これは、サーバー アプリを強制終了しても発生します。
サーバー アプリをもう一度実行すると、ポート「nnnn」がまだ使用されているというエラーが表示されます。
サーバー アプリをもう一度実行するには、数秒待つ必要があります。
私が見逃しているものはありますか?この動作を修正する方法はありますか?
上記の擬似コードには示されていませんが、サーバーを終了するときにソケット hMain を実際に閉じていることに注意してください。
よろしくお願いいたします。
よろしく、
ピーター