[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:25407] Re: TCP のportが解放されるとき
-
From:OSAKI Yohei
-
Date:Sat, 30 Apr 2005 22:01:37 +0900 (JST)
- Subject: [plamo:25407] Re: TCP のportが解放されるとき
- From: OSAKI Yohei <yoosaki@xxxxxxxxxxxxxxxxx>
- Date: Sat, 30 Apr 2005 22:01:39 +0900
大崎です。
http://www.csg.is.titech.ac.jp/~chiba/lecture/web/web01.html
に詳しい説明がありました。
> また、socket を close() しても、実は即座に socket が破棄されるわけではない。OSは送信した全てのデータを相手が正しく受信したことを確認しないと、socket を破棄できないからだ。このためサーバ側のプログラムを終了した後、すぐに再実行すると、bind() が「その port 番号は使用中です」というエラーを出して実行できないことがある。
>
> これを避けるためには、常にサーバよりもクライアントのプログラムが先に socket を close() するようにすればよい。多くの Unix の実装でこの事がいえる。あるいはクライアントの方を先に終了させるようにしてもいい (プロセスが終了すると全ての I/O が close される)。
>
> もし強制的にサーバの方から先に socket を close させるときは、close() の直前に
>
> shutdown(s, 2);
>
> を呼ぶとよい。s は socket の識別子、2は定数である。
shutdown()を呼んでいるようなので、これは当てはまりませんね。
> あるいはサーバ側で bind() する前にあらかじめ
>
> int value = 1;
> setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
>
> を実行しておいてもよい。
を実行してみたはどうでしょう?
--
/** OSAKI Yohei
* @e-mail yoosaki@extensionpoint.jp
*/
- References
-
- [plamo:25404] Re: TCP のport が解放されるとき, Iqbal Abdullah
- [plamo:25405] Re: TCP のportが解放されるとき, 早間
[検索ページ]
[メール一覧]
Plamo ML 公開システム