[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:25411] Re: TCP のportが解放されるとき
-
From:早間
-
Date:Sun, 1 May 2005 07:01:52 +0900 (JST)
- Subject: [plamo:25411] Re: TCP のportが解放されるとき
- From: 早間<hayama@xxxxxxxxxxxxx>
- Date: Sun, 01 May 2005 07:01:42 +0900 (JST)
早間です。
> 大崎です。
>
> http://www.csg.is.titech.ac.jp/~chiba/lecture/web/web01.html
>
> に詳しい説明がありました。
>
>
> > あるいはサーバ側で bind() する前にあらかじめ
> >
> > int value = 1;
> > setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value));
> >
> > を実行しておいてもよい。
>
> を実行してみたはどうでしょう?
>
皆さんからたくさん助言を頂きありがとうございます。
早速
int value = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &value,sizeof(value));
を実行したところ、終了後、すぐに起動しても bind がエラーを出さなく
なりました。CTL-C で終了させても大丈夫です。
# Linux の man からは SO_REUSEADDR に行きつけませんでした。
# setsockopt をサーチしたら microsoft の Web が出て来ました。
# microsoft の web には使用方法が例示されています。
疑問が生じたのは
perl では
socket(SOCKET,PF_INET,SOCK_STREAM,$proto);
bind (SOCKET,$addr);
listen(SOCKET,SOMAXCONN);
accept(CLIENT,SOCKET);
の状態で kill -HUP の実行で
close(SOCKET)
実行後同じプログラムを、同じ引数で再起動して終了していますが問題
無く起動出来ています。
条件が違うのは
(1) 起動が root 権限
(2) port 番号 が 1024 以下
なので、root と 1024 以下は特別扱いかとも思っていました。
また、SO_REUSEADDR (ソケットオプション)は
/usr/src/linux/include/asm-i386/socket.h
で定義されているので、kernel 依存性のある情報だと思うのですが、
移植性に問題は無いのでしょうか。と言うより
perl でもこの設定をしている筈と思うのですが、perl の Socket::
に kernel 依存性が生じてしまうようにもおもいます。
或いは、include の値は kernel が決めていても
「すべて同じ値になっている kernel 依存性は事実上無い」
と言うことなのでしょうか。
この設定は kernelから取り上げるべきなのでしょう
-- 早間 義博
メイリングリストから送られてくるメイル以外届きません。
- Follow-Ups
-
- [plamo:25412] Re: TCP のportが解放されるとき, Kaihei^Rastaman^Koyama
[検索ページ]
[メール一覧]
Plamo ML 公開システム