UNP環境配置

2022-05-22 06:12:09 字數 1785 閱讀 3695

最近在學習《unix網路程式設計》,書上將常用的標頭檔案都放在unp.h裡,需要自己編譯一下**搭建環境。

按照readme的說明進行編譯

$ ./configure

$ cd lib

$ make

$ cd ../libfree

$ make

此時,會在unpv13e資料夾下產生乙個libunp.a的庫檔案

3. 測試編譯是否成功

$ cd ../intro    # build and test a basic client program

$ make daytimetcpcli

$ ./daytimetcpcli 127.0.0.1

成功之後會顯示如下:

$ ./daytimetcpcli 127.0.0.1

02 may 2015 12:05:03 cst

將libunp.a放置到/usr/lib/與/usr/lib64/資料夾下,並修改環境變數。將config.h與unp.h放置到原始碼資料夾,修改unp.h中的../config.h為config.h.

開始練習

$ gcc daytimetcpcli.c -lunp
出現如下報錯:

inet_ntop.c:61: error: argument 'size' doesn't match prototype

/usr/include/arpa/inet.h:153: error: prototype declaration

處理:

修改libfree資料夾下的inet_ntop.c第61行 size_t size ->改成 socklen_t size

出現如下報錯:

[root@localhost intro]# ./daytimetcpcli 127.0.0.1

connect error: connection refused

處理:

安裝xinetd

修改 /etc/xinetd.d/daytime檔案中的disable yesdisable no

重啟xinetd

$ /etc/xinetd.d/ restart
檢視是否開啟daytime

$ netstat -ant
開啟daytime服務後,會有13這個埠

tcp        0      0 0.0.0.0:13              0.0.0.0:*               listen
出現如下報錯:

gcc -g -o2 -d_reentrant -wall   -c -o connect_nonb.o connect_nonb.c  

in file included from connect_nonb.c:1:

unp.h:114: error: redefinition of 『struct in_pktinfo』

make: *** [connect_nonb.o] 錯誤 1

處理:

結構in_pktinfo已經包含在標準標頭檔案bits/in.h中了, 它又通過 netinet/in.h 在unp.h中被包括進來. 只要將 unp.h 中的結構定義comment out注釋掉,然後重新編譯libunp.a

UNP學習筆記

1.一般情況下,伺服器程序在呼叫accpet函式後處於睡眠狀態,它等待客戶的連線和核心對它的接受。tcp連線使用三路握手來建立 tcp三次握手發生在呼叫accept函式後 當握手完畢時,accept函式返回。2.三次握手的全過程實現 下面步驟建立乙個tcp連線 1 伺服器必須準備好接受外來的連線。這...

apue 3與unp在Linux上程式設計環境搭建

在學習unix高階環境程式設計與unix網路程式設計的時候,按照作者的提示操作即可成功的編譯執行這兩本書提供的源 但是如果自己想想在自己的環境裡按照書籍學習,也就是在自己的環境裡呼叫作者封裝的api該怎麼辦呢?很直接的想法是將作者提供的api編譯成linux下的庫,然後將需要的標頭檔案和可檔案拷貝到...

環境配置 mac linux配置環境變數

這裡說的是新增使用者級環境變數。sudo vi bash profile 2 然後通過vim編輯器 當然也可以用其他編輯器如nano 新增或修改環境變數。關於vim操作的常見指令可以參考這裡。編輯完畢後在vim裡輸入 wq退出 3 最後再執行 source bash profile立即生效。4 通過...