[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:25414] Re: TCP のportが解放されるとき



早間です。

> 小山@倉敷です。
> 
> それは Sun, 01 May 2005 07:01:42 +0900 (JST) 頃のことでした。
> hayama@ab.wakwak.com さんはおっしゃいました...
> 
> > 疑問が生じたのは
> > perl では
> > socket(SOCKET,PF_INET,SOCK_STREAM,$proto);
> > bind (SOCKET,$addr);
> > listen(SOCKET,SOMAXCONN);
> > accept(CLIENT,SOCKET);
> > 
> > の状態で kill -HUP の実行で
> >  close(SOCKET)
> > 実行後同じプログラムを、同じ引数で再起動して終了していますが問題
> > 無く起動出来ています。
> 
> perl は使っていないので想像ですが、言語が実装している
> socket が、標準で reuse するようになっているとか?
> 

もっとも基本的なレベルでしかOSに依存していないと言うことでしょうね。

> > また、SO_REUSEADDR (ソケットオプション)は
> >   /usr/src/linux/include/asm-i386/socket.h 
> > で定義されているので、kernel 依存性のある情報だと思うのですが、
> > 移植性に問題は無いのでしょうか。と言うより
> 
> 「kernel 依存性のある情報」というより、「OS とかアーキテクチャの
> 相違を kernel で吸収すべきもの」という感覚でとらえています。
> 
> SO_REUSEADDR とか SO_KEEPALIVE とかは一般的によく指定される
> オプションだと思います。でも、KEEPALIVE の時間などは、OS 別
> で異なるので、そのあたりは要注意です。
> 

投げやりな気持ちではありませんが、うまく動いているのでこれで良いの
かと、
OS とかの機械が変われば同じオブジェクトでは使用できず、コンパイル
作業が必要なので大きな問題では無いのでしょう。

> 記憶ですが、Solaris とか FreeBSD あたりは同様に使用していました。
> まあ、POSIX 準拠系は大抵は大丈夫ではないかと思ってます。
> 
> ただ、この部分は大丈夫でも、他の部分でどうしても ifdef などで
> OS 別の実装をしないといけない場合も多いかもしれません。
> 
> また、こういう相違を python など、C より高級なプログラム言語は
> 吸収してくれやすいという事ですね。これも 100% ではありませんが...
> 

私なぞのプログラムは頭の固さのせいか、C でも perl でもあまり変わり
ません。ただ、正規表現を楽に使用できるので perl を愛用しています。
正規表現は C でも可能ですが、かなり面倒です。
また、perl で一応満足しているので、 python などにはまだ手を出して
いません。

# 文庫日記にある、あいみてののちのこころに 云々の解釈が心に残りま
# す。 python はどのような具合か、迷っています。

-- 早間 義博
    メイリングリストから送られてくるメイル以外届きません。

References
[plamo:25411] Re: TCP のportが解放されるとき, 早間
[plamo:25412] Re: TCP のportが解放されるとき, Kaihei^Rastaman^Koyama

[検索ページ] [メール一覧]
Plamo ML 公開システム