sudo ./daytimetcpsrv &
|
|
此時系統可能會詢問你管理者的密碼。
如果已用系統管理者的權限執行仍不能順利執行,試著將最後面的"&"去掉,
改成在前景執行Server端程式。此時你需要另開一個終端機(Terminal)程式來執行 Client 程式。
至於執行 Daytime Client 的步驟如下:
|
make daytimetcpcli
./daytimetcpcli 127.0.0.1
|
|
正確無誤後即可將 Daytime Server 關掉。步驟如下:
|
/* 結束 Daytime Server */
sudo -s
killall daytimetcpsrv
exit
|
|
其中 sudo -s 表示要用管理者的身份執行後面的程式。此時系統可能會詢問你管理者的密碼。
killall 是在測試完後將 Daytime Server 程序砍掉。
|
|
程式修改部分
- 建議先將intro/daytimetcpcli.c檔copy成另一個複本(如np_hw1_cli.c),然後修改複本檔。
- Client要送出學號資料給Server,需使用write(或作者提供的包裝版Write)函數。用法請參考
intro/daytimetcpserv.c檔。基本上第二個參數(字元指標)指向你要送出的資料,第三個參數說明要送出多少字元。
- 程式須在與Server建立連線後先送出學號資料,然後再讀取Server送回的日期時間資訊。
- 改完後要編譯你的程式。建議可用文字編輯器修改此程式目錄(intro/)中的 Makefile檔,在其中加入下列文字(此處假設你的程式
名稱是np_hw1_cli.c)
np_hw1_cli: np_hw1_cli.o
${CC} ${CFLAGS} -o $@ np_hw1_cli.o ${LIBS}
- 加入上述文字後將Makefile存檔,之後即可以用 make 指令編譯且連結出你的執行檔。如下面的執行範例
lhyen@lhyen-desktop:~/np/unpv13e/intro$ make np_hw1_cli
gcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o np_hw1_cli.o np_hw1_cli.c
gcc -I../lib -g -O2 -D_REENTRANT -Wall -o np_hw1_cli np_hw1_cli.o ../libunp.a -lpthread
- 上述紅色文字是在 Ubuntu 上執行時會出現的訊息,不同系統出現的訊息可能不同。編譯成功後此目錄中就有執行檔,檔名就是你C程式檔名去掉.c。在我們的例子中就是 np_hw1_cli。
|
|
連線上傳部分
- 請先下載Server端程式,配合你寫的Client程式先在Local端測試。
測試正確無誤後再連線上傳老師的 Server。未經Local端測試即上傳老師的 Server 導致Server程式Block或記錄檔產生多筆無效紀錄者將酌予扣分。
- 下載的Server端程式放在Client程式同一目錄,也須先編譯後才能執行。建議用修改Makefile的方式達成。修改內容如下
np13s_hw1_serv: np13s_hw1_serv.o
${CC} ${CFLAGS} -o $@ np13s_hw1_serv.o ${LIBS}
- 此Server端程式亦需系統管理者的權限方能執行。如權限不足將出現類似下列訊息
lhyen@lhyen-desktop:~/np/unpv13e/intro$ ./np13s_hw1_serv &
[1] 6097
lhyen@lhyen-desktop:~/np/unpv13e/intro$ bind error: Permission denied
[1]+ Exit 1 ./np13s_hw1_serv
如果已用系統管理者的權限執行仍不能順利執行,試著將最後面的"&"去掉,
改成在前景執行Server端程式。此時你需要另開一個終端機(Terminal)程式來執行 Client 程式。
- 如果執行時出現 "Address already in use" 的錯誤訊息,請確認先前的 Daytime Server 是否已關掉。此 Server 程式與 Daytime Server 佔用相同的 port number,但每個 port 同一時間都只能讓一個 server 佔用。
- 將Server端程式執行後,可以用 Client 程式連至 127.0.0.1。如正確會出現日期時間資訊,如下列執行結果
lhyen@lhyen-desktop:~/np/unpv13e/intro$ ./np_hw1_cli 127.0.0.1
Wed Mar 4 18:17:02 2015
- Server端程式執行結果將會被記錄到Server端程式所在目錄中的np13s_hw1_serv.log紀錄檔中。可用cat指令
或文字編輯器檢視此檔案內容,判別 Server 是否有收到 Client 送出的學號資訊。在下列例子中Server程式
正確收到Client程式送來的學號 "M9802007"。
lhyen@lhyen-desktop:~/np/unpv13e/intro$ cat np13s_hw1_serv.log
===================
Wed Mar 4 18:17:02 2015: connected from 127.0.0.1, port 57750
id = M9802007
Wed Mar 4 18:17:02 2015: disconnected from 127.0.0.1, port 57750
- 如果上述Local端測試成功無誤,即可與老師的Server程式連線。IP位址是140.127.220.246。
|