1. 程式人生 > >學習linux網路程式設計書籍推薦

學習linux網路程式設計書籍推薦

首先先學學編輯器,vim, emacs什麼的都行。
然後學make file檔案,只要知道一點就行,這樣就可以準備程式設計序了。《C程式設計語言》K&R,這樣呢,基本上就可以進行一般的程式設計了,順便找本資料結構的書來看。

如果想學習UNIX/LINUX的程式設計,《APUE》絕對經典的教材,加深一下功底,學習《UNP》的第二卷。這樣基本上系統方面的就可以掌握了。

然後再看Douglus E. Comer的《用TCP/IP進行網際互連》第一卷,學習一下網路的知識,再看《UNP》的第一卷,不僅學習網路程式設計,而且對系統程式設計的一些常用的技巧就很熟悉了,如果繼續網路程式設計,建議看《TCP/IP進行網際互連》的第三卷,裡面有很多關於應用協議telnet、ftp等協議的程式設計。
如果想寫裝置驅動程式,首先您的系統程式設計的介面比如檔案、IPC等必須要熟知了,再學習《LDD》2。

對於幾本經典教材的評價:


  《The C Programing Language》K&R 經典的C語言程式設計教材,作者是C語言的發明者,教材內容深入淺出。雖然有點老,但是必備的一本手冊。
《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常經典的書(廢話,Stevens的書哪有不經典的!),雖然初學者就可以看,但是事實上它是《Unix Network Programing》的一本輔助資料。國內的翻譯的《UNIX環境高階程式設計》的水平不怎麼樣,現在有影印版,直接讀英文比讀中文來
得容易。
《Unix Network Programing》W.Richard Stevens:第一卷講BSD Socket網路程式設計介面和另外一種網路程式設計介面的,不過現在一般都用BSD Socket,所以這本書只要看大約一半多就可以了。第二卷沒有設計到網路的東西,主要講程序間通訊和Posix執行緒。所以看了《APUE》以後,就可以看它了,基本上系統的東西就由《APUE》和《UNP》vol2概括了。看過《UNP》以後,您就會知道系統程式設計的絕大部分程式設計技巧,即使卷一是講網路程式設計的。國內是清華翻譯得《Unix網路程式設計》,翻譯者得功底也比較高,翻譯地比較好。所以建議還是看中文版。
《TCP/IP祥解》一共三卷,卷一講協議,卷二講實現,卷三講程式設計應用。我沒有怎麼看過。,但是據說也很經典的,因為我沒有時間看卷二,所以不便評價。
《用TCP/IP進行網際互連》Douglus.E.Comer 一共三卷,卷一講原理,卷二講實現,卷三講高階協議。感覺上這一套要比Stevens的那一套要好,就連Stevens也不得不承認它的第一卷非常經典。事實上,第一卷即使你沒有一點網路的知識,看完以後也會對網路的來龍去脈瞭如指掌。第一卷中還有很多習題也設計得經典和實用,因為作者本身就是一位教師,並且卷一是國外研究生的教材。習題並沒有答案,留給讀者思考,因為問題得答案可以讓你成為一箇中級的Hacker,這些問題的答案可以象Douglus索取,不過只有他只給教師卷二我沒有怎麼看,卷三可以作為參考手冊,其中地例子也很經典。如果您看過Qterm的原始碼,就會知道Qterm的telnet實現部分大多數就是從這本書的原始碼過來的。對於網路原理的書,我推薦它,而不是Stevens的《TCP/IP祥解》。
《Operating System - Design and Implement》這個是講作業系統的書,用Minix做的例子。作者母語不是英文,所以英文看起來比較晦澀。國內翻譯的是《作業系統 設計與實現》,我沒看過中文版,因為翻譯者是尤晉元,他翻譯的《APUE》已經讓我失望頭頂了。讀了這本書,對作業系統的底層怎麼工作的就會有一個清晰的認識。
《Linux Device Driver》2e ,為數不多的關於Linux裝置驅動程式的好書。不過內容有些雜亂,如果您沒有一些寫驅動的經驗,初次看會有些摸不著南北。國內翻譯的是《Linux裝置驅動程式》第二版,第一版,第二版的譯者我都有很深的接觸,不過總體上來說,雖然第二版翻譯的有些不盡人意,但是相比第一版來說已經超出了一大截。要讀這一本書,至少應該先找一些《計算機原理》《計算機體系結構》的書來馬馬虎虎讀讀,至少應該對硬體和計算機的工作過程有一些瞭解。