|
inetdとは
inetdはスーパーサーバ(super server)とも呼ばれますが,
ポートを監視して,接続要求があった時に、そのサーバプログラムを
起動して,それをクライアントと接続するプログラムです.
これによりいくつものデーモンが常に動いている必要がなくなり、
必要な時にだけ動作するため効率がよくなります。
プログラムの例
inetdは標準入出力をソケットにパイプしてくれるので、
サーバプログラムの開発の際に特にネットワークプログラムで
あることを意識する必要はなく、普通の標準入出力を使う
プログラムを記述するだけでサーバを作ることができます。
例えば次のようなプログラムを作ってみてください.
main() {
int a,b
scanf("%d %d",&a,&b)
printf("%d+%d=%d\n",a,b,a+b);
}
|
これは足し算をするプログラムです。
普通はこのファイル(以下の例ではadd.c)をコンパイルして
シェル上で実行して使います.
% cc -o add add.c
% ./add
3 5
3+5=8
|
これをネットワークから接続するようにするのがinetdなのです。
設定方法
- /etc/servicesに以下の内容を追加します.
これは7070番ポートを使う場合です。
他のポートを使う場合にはポート番号を変更してください。
- /etc/inetd.confに以下の内容を追加します.
netadd stream tcp nowait root /home/takeshi/add add
|
この例では実行ファイルが/home/takeshi/addにあることを
想定していますが、別のパスにある場合はここを変更してください。
- inetdを再起動します
# kill -HUP 'INETDのプロセスID'
|
プロセスIDはpsコマンドなどで確認してください。
これで7070番ポートに接続してaddを呼び出す設定がなされました。
動作テスト
近くの適当なマシンからtelnetで次のように接続してみてください。
% telnet panda 7070
8 7
8+7=15
|
ここではpandaというホストを指定していますが、
実際にテストするときには上のinetdの設定を行ったホストを指定してください
このようにネットワークを介して接続して、プログラムを実行できれば
設定はうまくいっています。
|
|   |
|