網路程式設計 作業三

Last updated:

此次作業要求你寫一個client程式,與一個已經存在的server程式通訊。

你可以改寫第五章的 Echo client (tcpcliserv/tcpcli01.c) 程式, 使此 client 與 server 的連結建立後(port=SERV_PORT),先送出你的學號。Server 收到後會送出兩個 介於1至65536的整數,你的 client 收到後請回傳這兩個數字的和,並等待 server 的回應。如果 server 回傳 "ok\n",表示上傳成功且結果正確,client 可關閉連線。 如果 server 回傳 "nak\n",表示上傳不成功,client 須接收另一組數字,並 重覆上述計算與上傳過程。如果 server 回傳 "wrong\n",表示上傳成功但結果不正確, 且 server 不再接受此 client 的資料。一個可能的執行流程範例如下圖所示。

假設我們先將tcpcli01.c複製成為另一個 hw3cli12.c。接下來 你可以用 Unix 下的 vi 或 GNOME 桌面下的 gedit 來編輯此程式。 事實上你要做的是改寫該程式中main呼叫的 str_cli 函數,你可以先將此main呼叫的函數改名 (如xchg_data),然後將此函數的定義寫在同一個程式檔案中。 修改完程式後,請參考此網頁來編譯你的程式

如果編譯沒問題,就可以執行你的這個 client 程式了。目前老師的 server IP 位址為 140.127.220.246。你可以在 client 程式中加適當的 output 訊息以瞭解 連線過程是否順利。如以下的執行範例:

lhyen@lhyen-desktop:~/np/unpv13e/tcpcliserv$ ./hw3cli12 140.127.220.246
sent: A0945535
recv: 64279 18122

sent: 82401

recv: nak!
recv: 62550 39299

sent: 101849

recv: ok!


lhyen@lhyen-desktop:~/np/unpv13e/tcpcliserv$

server 程式會記錄連線的時間, IP 位址, port號碼等訊息,也會記錄收到的資料。為了瞭解 server 程式的運作,你也可以自行下載安裝 server 程式以供自行測試之用。

我將以 server 程式的連線記錄檔來作為程式是否撰寫成功與否的依據。請注意不要以自行 keyin 資料的方式與 server 通訊。自行 keyin 資料所需時間過久,從連線記錄檔即可看出來。

提醒各位:此server程式呼叫Readline函數接收client送過去的資料,所以記得client端必須在要送出去資料的最後加上換行字元, server才讀得到。Readline函數的原始程式碼在 test 目錄下的 readline1.c 中。

Maintained by Li-Hsing Yen.

Please report any mistakes/typos.