《UNIX網絡編程 卷1》之"學習環境搭建"(CentOS 7)

  《UNIX網絡編程 卷1》的源碼能夠從www.unpbook.com下載獲得。解壓以後的目錄爲unpv13e。html

詳細步驟

編譯

  進入unpv13e目錄,按以下步驟編譯:編程

 1 ./configure 
 2 
 3 cd lib 
 4 make // 可能遇到問題:redefinition of ‘struct in_pktinfo’
 5 
 6 cd ../libfree 
 7 make 
 8   
 9 cd ../libroute
10 make //這一步可能會出錯,可忽略,只是表示你的系統不支持 4.4BSD,並不影響對該書的學習
11   
12 cd ../libgai 
13 make 

  針對上邊的問題‘redefinition of ‘struct in_pktinfo’,咱們須要將unpv13e/key/unp.h及unpv13e/sctp/unp.h中的「struct in_pktinfo」結構體聲明註釋掉,由於它已經被包含在標準頭文件bits/in.h中了。修改以後須要從新編譯 。vim

  以上步驟會生成一個靜態庫libunp.a。服務器

將生成的libunp.a靜態庫複製到/usr/lib/和/usr/lib64/中

1 cd ..   //回到 unpv13e 目錄 
2 sudo cp libunp.a /usr/lib 
3 sudo cp libunp.a /usr/lib64 

修改unpv13e/lib/unp.h並將其和config.h拷貝到/usr/include中

1 vim lib/unp.h //將 unp.h 中#include "../config.h"修改成#include "config.h" 
2 sudo cp lib/unp.h /usr/include 
3 sudo cp config.h /usr/include 

運行示例(unpv13e/intro/daytimetcpcli.c)

  1)編譯時必須加上靜態連接庫:-l 參數加上 libunp.a  去掉lib和後面的.a。最後獲得參數-lunp網絡

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

  2)測試上面生成的可執行文件獲取本機當前日期:tcp

1 ./daytimetcpcli 127.0.0.1

  在進行測試時會出現如下錯誤:學習

1 connect error:Connection refused

  3)該錯誤表示 daytime 服務程序沒開,可經過  xinetd來實現對服務鏈接請求的控制。如下經過 xinetd 開啓 daytime 服務程序。測試

1 sudo cd /etc/xinetd.d/
2 sudo vim daytime

  若是xinetd.d文件夾是空的,則須要先安裝xinetd服務:spa

1 sudo yum install xinetd.x86_64

  將 daytime-stream 和 daytime-dgram 兩個文件中的 disable = yes 修改爲 disable = no,並保存退出,而後重啓 xinetd:.net

1 service xinetd restart

  4)再次測試該例子,能成功顯示本機時間:

1 ./daytimetcpcli 127.0.0.1
2 22 JUN 2015 15:20:03 CST

參考資料

  《網絡編程》關於 UNIX網絡編程 卷1 的 unp.h 和源碼編譯問題

  Unix NetWork Programming——環境搭建(解決unp.h等源碼編譯問題)

  CentOS開啓daytime服務器

相關文章
相關標籤/搜索