天天看點

UNIX網絡程式設計之一:代碼環境搭建

一、源代碼的下載下傳和編譯

源代碼下載下傳位址:

http://www.unpbook.com/

, 下載下傳下來得到unpv13e.tar.gz檔案,如果慢的話,筆者已經上傳到網盤:

https://pan.baidu.com/s/1nLRUfQ0T7EAcnh4p6Bs5yQ

編譯步驟:

解壓縮unpv13e.tar.gz

1

進入unpv13e檔案夾中

cd ./unpv13e
./configure     //如果權限不夠可以chmod改權限
           

編譯lib檔案

cd lib
make          //出現大量warning,忽略之
cd ../libfree
make         //若出現錯誤,看後面橫線内解決辦法。無則跳過
           

錯誤如下:

inet_ntop.c: In function ‘inet_ntop’: 
inet_ntop.c::: error: argument ‘size’ doesn’t match prototype 
size_t size; 
           

此時在libfree目錄下,修改

重新make即修複錯誤。

繼續執行下面指令:

cd ../libgai
make
           

二、環境搭建

修改

unp.h

, 将

#include “../config.h”

修改為

#include “config.h”

,如下:

cd .. //回到主目錄
sudo vim lib/unp.h
           

繼續,拷貝頭檔案到include

sudo cp config.h /usr/local/include
sudo cp lib/unp.h /usr/local/include
           

拷貝庫檔案

sudo cp libunp.a /usr/local/lib
           

到此,unix網絡程式設計一書上的代碼都可以編譯了。

三、示例代碼測試

以示例intro/daytimetcpcli.c為例:

編譯daytimetcpcli.c檔案

cd ./intro  
gcc daytimetcpcli.c -o daytimetcpcli -lunp
           

運作

./daytimetcpcli 127.0.0.1
           

測試的時候會出現如下錯誤

connect error:Connection refused
           

在ubuntu系統下需要開啟daytime,可通過xinetd來實作對服務連接配接請求的控制。

沒有xinetd.d,需要安裝

sudo apt-get install xinetd

然後編輯daytime

vim /etc/xinted.d/daytime

将檔案中的兩個disable後面的yes改成no,儲存退出

重新開機xinted.d

service xinetd restart
           

再次測試daytimetcpcli例子,

./daytimetcpcli 127.0.0.1
           

得到正确的結果

繼續閱讀