前言
目前圖書市場上,工作3∼4年的Linux開發工程師能參考的實用型網路程式設計書不多,不少Linux網路程式設計書還從編輯器、編譯器如何使用講起,那些內容都是給學生或剛剛工作的人員看的,適用於未接觸過Linux開發的人。Linux網路程式設計最重要的基礎有兩點,一是Linux多執行緒程式設計功力,二是對網路通訊協定的理解。筆者以前撰寫的書籍對Linux基礎程式設計進行了較為詳細的說明,也獲得了不錯的市場回饋。很多讀者都問筆者:下一步想深入地學習Linux程式設計,應該看哪些書?我想,Linux程式設計的兩大就業領域中,一個是嵌入式開發,另一個是網路伺服器程式設計。前者目前書籍較多。而後者,尤其是有深度、符合應徵市場要求的從基礎到案例的網路程式設計書非常少!當前網路系統越來越複雜,應用範圍越來越大,迫切需要新的技術來應對新應用的挑戰。這一點可以從廣大應徵啟事上看得出來。網路程式設計難,難就難在伺服器程式設計。
一本專門說明Linux伺服器程式設計的書,不但能幫助一般工程師提高網路程式設計能力,而且還可以為市場輸送更符合需求的工程師。筆者常年從事最前線Linux伺服器程式設計,了解流行的Linux網路程式設計技術,並且擁有相關專案經驗。
關於本書
本書涵蓋Linux網路程式設計從基礎到高級開發的基礎知識,重點講解了技術性較強的TCP程式設計、UDP程式設計和I/O模型程式設計,同時對每個基礎知識都從原始概念和基本原理進行了詳細和透徹的分析,並對比較複雜和難度較高的內容繪製了原理圖進行講解。書中的範例程式大多是從實際專案複習而來,有很強的實用性。
本書從五大伺服器程式設計基礎技術開始逐步深入到四大專案案例進行開發實踐,融合基礎知識和一些資料庫、跨平台介面程式設計知識,使得我們的案例系統完整且包含用戶端,甚至稍微修改就可以上升為商用軟體,比如最後一章的併發遊戲伺服器。通常在網路程式設計書中,一般只會講解一個綜合案例,而本書提供了HTTP伺服器、FTP伺服器、併發聊天伺服器與C/S和P2P聯合架構的併發遊戲伺服器四大專案案例,可以作為課程設計和學生畢業設計的素材。
本書適用的讀者
本書由於技術全面、講解循序漸進、學習曲線坡度小、註釋詳盡,因此本書適用的讀者面很廣,可作為學校和培訓班教材使用,也可作為工程師自學教材。另外,本書需要讀者有C和C++的基礎,最好是C++11,因為本書的執行緒池用到的語言是基於C++11的。
本書作者與鳴謝
本書筆者為朱文偉和李建英。本書的順利出版,離不開清華大學出版社老師們的幫助,在此表示衷心的感謝。雖然筆者盡了最大努力撰寫本書,但書中依然可能存在疏漏之處,敬請讀者提出寶貴的意見和建議。
作者