2000/04/24

2000/04/24

[LINUX] Linux SO_SNDBUF/SO_RCVBUF

Linuxでsetsockopt()とgetsockoptを使う時の注意。Linuxはsocketのバッファの半分をカーネル内部のメタデータ(skbuffなど)用に使用する。BSDはそうではないので伝統的なBSDを想定しているプログラムはこのようなことを期待していない。よってこのようなプログラムではLinuxにおいて期待するバッファよりも小さいものしかなくなる。 socket(7)にも以下の記述がある:

注意
       Linux は、送受信バッファの半分を内部のカーネル構造体で用い
       ると仮定している。したがって sysctl はネットの回線上での大
       きさの 2 倍になる。

0 件のコメント: