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

[plamo:25412] 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 するようになっているとか?

> また、SO_REUSEADDR (ソケットオプション)は
>   /usr/src/linux/include/asm-i386/socket.h 
> で定義されているので、kernel 依存性のある情報だと思うのですが、
> 移植性に問題は無いのでしょうか。と言うより

「kernel 依存性のある情報」というより、「OS とかアーキテクチャの
相違を kernel で吸収すべきもの」という感覚でとらえています。

SO_REUSEADDR とか SO_KEEPALIVE とかは一般的によく指定される
オプションだと思います。でも、KEEPALIVE の時間などは、OS 別
で異なるので、そのあたりは要注意です。

記憶ですが、Solaris とか FreeBSD あたりは同様に使用していました。
まあ、POSIX 準拠系は大抵は大丈夫ではないかと思ってます。

ただ、この部分は大丈夫でも、他の部分でどうしても ifdef などで
OS 別の実装をしないといけない場合も多いかもしれません。

また、こういう相違を python など、C より高級なプログラム言語は
吸収してくれやすいという事ですね。これも 100% ではありませんが...

---
         _\|/_
         (o o)
 +----oOO-{_}-OOo--------------+
 |  Kaihei Koyama / KCT Corp.  |
 |  RastamanEngineer           |
 |  mailto:koyama@kct.co.jp    |
 |  http://www.kct.co.jp       |
 +-----------------------------+

Follow-Ups
[plamo:25414] Re: TCP のportが解放されるとき, 早間
References
[plamo:25411] Re: TCP のportが解放されるとき, 早間

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