とりあえず/etc/まで移動してinetd.confがあるのを確かめる %cd /etc/ %ls -l inetd.conf -rw-r--r-- 1 root wheel 2963 Nov 27 17:08 inetd.conf アクセス権がなくて編集できないのでアクセス権を変更する %sudo chmod o+w inetd.conf エディタで編集する(今回はmiを使用) %open -a mi inetd.conf 上の方にある「/sbin/service --list」のコメントアウトをはずす(「#」を削除する) 最下部に「tcpinetd stream tcp nowait root /(絶対パス)/server」を追加(絶対パスは%pwdで調べる) 今回は/Users/j05017/jikken2/tcpip内にサンプルプログラムが入っているので 「tcpinetd stream tcp nowait root /Users/j05017/jikken2/tcpip/server」 セーブして終了 アクセス権をもとに戻して、戻ってることを確認する %sudo chmod o-w inetd.conf %ls -l inetd.conf -rw-r--r-- 1 root wheel 2963 Nov 27 17:15 inetd.conf もとに戻ってるのでOK |
とりあえず/etc/まで移動してinetd.confがあるのを確かめる %cd /etc/ %ls -l services -rw-r--r-- 1 root wheel 572694 Nov 27 15:22 services アクセス権がなくて編集できないのでアクセス権を変更する %sudo chmod o+w services エディタで編集する(今回はmiを使用) %open -a mi services 最下部に「tcpinetd 5682/tcp」を追加 セーブして終了 アクセス権をもとに戻して、戻ってることを確認する %sudo chmod o-w services %ls -l services -rw-r--r-- 1 root wheel 572694 Nov 27 15:25 services もとに戻ってるのでOK |
#define DATAFILE "data" を自分の設定に直す (今回は#define DATAFILE "/Users/j05017/jikken2/tcpip/data") |
#define HOST_NAME "hoge" を自分の設定に直す (今回は#define HOST_NAME "nw0517.st.ie.u-ryukyu.ac.jp") |
%cc -g -o server server.c %cc -g -o client client.c |
%./client Connected. Input Keyword = warning: this program uses gets(), which is unsafe. yama Keyword = [yama] / Data = [kawa] Input Keyword = 123 Keyword = [123] / Data = [456] Input Keyword = Disocnnected. |
%ps -aux | grep xinetd root 750 0.0 0.0 27376 332 ?? Ss 4:43PM 0:00.01 xinetd -inetd_compat j05017 764 0.0 0.0 8780 8 p1 R+ 4:51PM 0:00.00 grep xinetd %sudo kill 750 |
client.cのソースコード(別ウィンドウ) | |
Connect() | ソケットを生成し、コネクション確立の準備をする |
SendData() | サーバにデータを送る |
RecvData() | データを受信する |
Disconnect() | コネクションを切断する |
server.cのソースコード(別ウィンドウ) | |
GetLineFromPeer() | クライアントからデータを受け取る |
GetKetbordData() | 受信したデータを変換 |
sprint() | 変換したデータをクライアントに送信、main()内にある |
(1) | コネクションを確立する |
(2) | 次のメソッド |
(3) | データを送信する |
(4) | 受信したデータを次のメソッドに渡す |
(5) | dataファイルの中身と比較 |
(6) | dataファイルの中身と比較 |
(7) | 変換した結果を次のメソッドに渡す |
(8) | 変換した結果を送信 |
(9) | 次のメソッド |