■課題2:inetdを使用するサーバプログラムの作成
サンプルプログラム(1)はサーバ(server.c)をinetdから起動することで、サーバはクライアント(client.c)の標準入力から入力された文字に対応するキーワードをクライアントに返すプログラムである。サンプルプログラム(1)を自分の実験環境で動作するようにし、実行結果を示すとともに、プログラムの中で使われている関数(Connect,Disconnect, Send Data, Recv Dataなど)の動作を説明し、サーバ・クライアント動作全体をフローを示して説明せよ。


<<実行結果>>
[nw0417:~/work/jikken2/tcpip] j04017% client
       Connected.
 Input Keyword = warning: this program uses gets(), which is unsafe.
 123
 Keyword = [123] / Data = [456] 
 Input Keyword = yama
   Keyword = [yama] / Data = [kawa]
 Input Keyword = xyz
   Keyword = [xyz] / Data = [XYZ]
 Input Keyword = shiro
   Keyword = [shiro] / Data = [kuro]
 Input Keyword = xxxx
   Keyword = [xxxx] / Data = [yyyy]
[関数の動作説明]
・Connect
ソケットを生成し、コネクションの準備をするための関数。
・Disconnect
   ソケット接続を解除し、コネクションを終了するための関数。
   ・SendData
   入力されたデータをサーバに書き込むための関数。
   ・RecvData
   データの結果をサーバから受け取るための関数。
・GetLineFromPeer
   クライアントから入力されたデータを受け取るための関数。
・GetKetbordData
   SendDataから送られてきたデータを比較し、一致するデータがあると変換され、当てはまるデータが存在しない場合は空を出す。
  以下の図1にてサーバー、クライアントの動作を表す図を示す。

図1.サーバー、クライアントプログラムの動作全体フロー