課題3:inetdを使用しないサーバプログラムの作成


サンプルプログラム(1)のサーバプログラム(server.c)はinetdから起動するものであるが、inetdを使用せずに同じ動作をするデーモン型のサーバプログラムを作成し、実行結果を示すとともに、inetdを使用するサーバプログラムとそうでないものとの実装上の違いを説明せよ。

【実行結果】


st-NEET:~ j05043$ server2
now waiting for client connect
Connected from 127.0.0.1

st-NEET:~ j05043$ client2
Connected.
Input Keyword = warning: this program uses gets(), which is unsafe.
123
Keyword = [123] / Data = [456]

Input Keyword = xyz
Keyword = [xyz] / Data = [XYZ]

Input Keyword = xxxx
Keyword = [xxxx] / Data = [yyyy]

Input Keyword = 
Disocnnected.



server2.cのソース
client2.cのソース

【inted使用時】


inetdを用いた場合、クライアントが要求を送信したと同時にサーバーが立ち上ががることになり、返答の後すぐに落ちる。 また、常駐しない為にシステムリソースが減少するが、サーバーの立ち上がりを待つ分レスポンスが遅くなってしまうという欠点を持つ。 これによって必要な部分の使い分けが可能となる。

【inted未使用時】


inetdを用いなかった場合はクライアントの要求に応える為に、システム上に常駐しなければならない。