課題2:inetdを使用するサーバプログラムの作成
サンプルプログラム(1)はサーバ(server.c)をinetdから起動することで,サーバはクライアント(client.c)の標準入力から入力された文字に対応するキーワードをクライアントに返すプログラムである.サンプルプログラム(1)を自分の実験環境で動作するようにし,実行結果を示すとともに,プログラムの中で使われている関数(Connect,Disconnect, Send Data, Recv Dataなど)の動作を説明し,サーバ・クライアント動作全体をフローを示して説明せよ.
実行結果
[nw0553:~/inetd] j05053% ./client
Connected.
Input Keyword = warning: this program uses gets(), which is unsafe.
yama
Keyword = [yama] / Data = [kawa]
Input Keyword = xyz
Keyword = [xyz] / Data = [XYZ]
Input Keyword = 123
Keyword = [123] / Data = [456]
Input Keyword = xxxx
Keyword = [xxxx] / Data = [yyyy]
Input Keyword = shiro
Keyword = [shiro] / Data = [kuro]
関数の動作の説明
・client
- Connect():ソケットを作成し,コネクションを準備する.
- SendData():入力されたデータをサーバに送る.
- RecvData():サーバから送られたデータの結果を受け取る.
- Disconnect():ソケットの接続を解除する.
・server
- GetLineFromPeer():クライアントから送られたデータを受け取る.
- GetKeywordData():入力されたデータとdata.txt内のデータを比較し,結果を返す.
フローチャート