第一:我要說一點呛凶,UNIX網(wǎng)絡編程這本書非常之經(jīng)典,高手必讀系列
第二:就算不讀此系列書籍行贪,你照樣可以做一個應用開發(fā)者漾稀,但為什么我們要學此塊知識。這個問題嘛瓮顽,張無忌為什么學習乾坤大挪移等武功都比其他人快且厲害县好,因為他有高深的九陽神功內(nèi)功
第三:UNIX網(wǎng)絡編程這本書中的api接口你可能在接下來很長一段時間甚至工作中都見不到,那么我們需要死記嗎暖混?這個問題嘛缕贡,重在理解其中原理,先大體調(diào)試幾遍拣播,隨著經(jīng)驗和閱歷的增加你的感受會慢慢加深晾咪,選取其中重點的一些接口記憶,其他的知道有這么個東西贮配,使用時查閱即可
第四:如果你碰到真正的計算機高手谍倦,別人肯定會建議你有事沒事看源碼(ps:那些天天嚷著需求最重要,計算機只是實現(xiàn)工具泪勒,模板改改拖一拖控件就可以的人可以靠邊了)昼蛀,而此書,就是看服務程序源碼的基礎圆存。
第五:接下來要編譯的unpv13e是什么叼旋?
unix網(wǎng)絡編程這本書中的源碼,在學習此書之前沦辙,我們需要將其下載編譯夫植,便于以后調(diào)試
1.源碼環(huán)境和地址
我采用的是ubuntu14.04 64位系統(tǒng)
下載地址:http://pan.baidu.com/s/1i44Szzv
或者安裝wget油讯,然后切到~/Downloads/下運行 wget http://www.unpbook.com/unpv13e.tar.gz (推薦wget這個工具详民,很好用)
cd ~/Downloads/? //進入下載目錄
tar -zxvf unpv13e.tar.gz //解壓壓縮文件夾
cd unpv13e/???? //進入解壓后的文件夾,里面結構顯示如下
unpv13e中包含許多子文件夾陌兑,每一個子文件夾都代表一個具體模塊的實例沈跨,比如,在intro文件夾中兔综,顯示的是第一章簡介中的所有實例程序集合
編譯unix卷1中的示例源碼時饿凛,會碰到一些問題隅俘。最大的問題在于平臺的差異(以后碰到再說),以后不管是這個源碼還是其他什么架構的安裝笤喳,作為一個IT工作者为居,我們首先要查看其中的說明和文檔,此處查看/unpv13e/ 下的README文件
cd ~/Downloads/unpv13e
vim README,此處給出部分截圖
于是杀狡,照著上述步驟蒙畴,第一步
./configure ,部分截圖如下
那么./configure 這句話到底是什么意思呢? 簡單說來呜象,它就是起到一個檢查和生成的作用膳凝。檢查你的系統(tǒng)類型,檢查你的gcc恭陡,檢查你的某些頭文件是否存在蹬音,檢查某些數(shù)據(jù)類型是否被定義,檢查某些機制是否存在等休玩,最后會生成makefile文件著淆。
//?build the basic library that all programs need
輸入命令行:
cd lib
make
如果沒有報error,則說明make成功
make具體做了什么呢拴疤?查看打印在屏幕上的信息可以發(fā)現(xiàn)永部,對于里面的.c文件都做了類似這樣的操作
gcc -I../lib -g -O2 -D_REENTRANT -Wall?? -c -o connect_nonb.o connect_nonb.c, 主要就是把.c文件都編譯生成了對應的目標文件呐矾。然后ar rv ../libunp.a connect_nonb.o connect_timeo.o ...?? 把所有目標文件模塊都歸入libunp.a庫中苔埋,以后鏈接此庫時直接 -lunp(體現(xiàn)軟件重用的思想)
接下來
cd ../libfree? # continue building the basic library
make
碰到問題如下:
解決辦法: vim inet_ntop.c + 60? 定位到函數(shù)頭,修改size_t? 變?yōu)閟ocklen_t類型
然后結果如下
warning不管蜒犯,是書籍作者沒有初始化參數(shù)组橄。
接下來
cd ../libroute ? ? ? ? ? ? ? ? ? ? # only if your system supports 4.4BSD style routing sockets
make
發(fā)現(xiàn)缺少頭文件,編譯終止罚随,因為我用的系統(tǒng)不支持路由套接字(什么是路由套接字以后會慢慢講解)
cd ../libxti?? # only if your system supports XTI
make
我的系統(tǒng)也不支持XTI
最后
cd ../intro??? # build and test a basic client program
make
正常完成玉工,也就是說unix卷1第一章簡介中的所有程序都編譯鏈接完成,可以正常運行
下面我們來測試:
先啟動時間服務程序(一般linux可能自帶時間服務程序毫炉,但默認可能是不開啟的瓮栗,你也可以直接開啟自帶的時間服務程序)
sudo ./daytimetcpsrv & 記住權限問題削罩,開啟服務程序瞄勾,一般需要綁定和監(jiān)聽端口號,需要授予較高權限弥激,所以sudo
再運行客戶端時間獲取程序
./daytimetcpcli 127.0.0.1
截圖如下
成功=浮!微服!