《TCP\IP網絡編程基礎教程》是一本基于TCP/IP協(xié)議進行計算機網絡編程方面的教科書,全書主要內容包括基于套接字的TCP/IP網絡通信原理與模型、循環(huán)服務器軟件的實現(xiàn)原理與方法、服務器與客戶進程中的并發(fā)機制、多進程并發(fā)機制的實現(xiàn)原理與方法、多線程并發(fā)TCP服務器軟件的實現(xiàn)原理與方法、單線程并發(fā)機制的實現(xiàn)原理與方法、基于POOL和EPOLL的并發(fā)機制與實現(xiàn)方法、客戶/服務器系統(tǒng)中的死鎖問題八章內容以及GCC編譯器簡介、課程實驗兩個附錄。全書通過原理介紹與例程剖析的形式,系統(tǒng)介紹了UNIX/Linux與Windows環(huán)境下如何使用C語言基于TCP/IP協(xié)議與SocketAPI進行網絡編程的詳細步驟與過程。
與同類教材相比,《TCP\IP網絡編程基礎教程》主要的特點為:在注重闡述TCP/IP網絡通信原理與套接字API編程原理的基礎上,通過對例程的深入剖析,深入淺出地介紹服務器與客戶軟件的編程技巧,同時,在章節(jié)的編排上更加富有銜接性。全書內容按照TCP/IP網絡通信原理一循環(huán)服務器軟件設計一并發(fā)服務器軟件設計一客戶/服務器系統(tǒng)中的死鎖問題一編譯環(huán)境一課程實驗的順序,通過C語言例程剖析,由淺入深地介紹了基于TCP/IP協(xié)議進行網絡編程的原理與方法。通過以上連貫的章節(jié)編排,讀者能夠更加簡潔、系統(tǒng)地掌握網絡編程技術。
《TCP\IP網絡編程基礎教程》特別適合網絡工程、計算機科學技術與通信工程等專業(yè)的本、專科學生和從事計算機網絡編程的技術人員,同時也可供其他專業(yè)的學生、計算機網絡技術愛好者,以及計算機應用技術相關的工程技術人員參考。
第1章 基于套接字的TCP/IP網絡通信原理與模型
1.1 TCP/IP協(xié)議概述
1.1.1 TCP/IP參考模型
1.1.2 TCP/IP網絡通信中的客戶.服務器模型
1.1.3 TCP/IP參考模型的通信原理
1.2 基于套接字的網絡通信原理
1.2.1 套接字概述
1.2.2 基于套接字的TCP/IP網絡通信原理
1.2.3 基于套接字的TCP/IP網絡通信軟件實現(xiàn)流程
1.3 基于套接字的TCP/IP網絡通信過程中的相關問題
1.3.1 客戶算法中服務器套接字端點地址查找問題
1.3.2 客戶算法中本地端點地址的選擇問題
1.3.3 套接字端點地址的存儲結構問題
1.3.4 客戶,服務器模型中的匯聚點問題
1.3.5 主機字節(jié)順序與網絡字節(jié)順序問題
1.3.6 IP地址與端口號的查找問題
1.3.7 由協(xié)議名查找協(xié)議號的問題
1.3.8 服務器算法中熟知端口的綁定問題
1.4 套接字API概述
1.4.1 BSDUNIx套接字API系統(tǒng)函數簡介
1.4.2 Windows套接字API擴展系統(tǒng)函數簡介
1.5 基于套接字的TCP/IP網絡通信模型與實現(xiàn)方法
1.5.1 IJNIX/Linux環(huán)境下UDP套接字通信模型與實現(xiàn)方法
1.5.2 LINIX/Linux環(huán)境下TCP套接字通信模型與實現(xiàn)方法
1.5.3 Windows環(huán)境下UDP套接字通信模型與實現(xiàn)方法
1.5.4 Windows環(huán)境下TCP套接字通信模型與實現(xiàn)方法
1.6 本章小結
本章習題
第2章 循環(huán)服務器軟件的實現(xiàn)原理與方法
2.1 客戶/服務器模型中服務器軟件實現(xiàn)的復雜性
2.1.1服務器設功能需求的復雜性
2.1.2服務器類型的復雜性
2.2 循環(huán)服務器的進程結構
2.2.1 循環(huán)LTDP服務器的進程結構
2.2.2 循環(huán)TCP服務器的進程結構
2.3 循環(huán)服務器軟件的設計流程
2.3.1 循環(huán)UDP服務器軟件的設計流程
2.3.2 循環(huán)TCP服務器軟件的設計流程
2.4 基于循環(huán)服務器的網絡通信例程剖析
2.4.1 相關系統(tǒng)函數及其調用方法簡介
2.4.2 UNIX/Linux環(huán)境下基于TCP套接字的例程剖析
2.4.3 Windows環(huán)境下基于TCP套接字的例程剖析
2.4.4 UNIX/Linux環(huán)境下基于UDP套接字的例程剖析
2.4.5 Windows環(huán)境下基于UDP套接字的例程剖析
2.4.6 LINIX/Linux環(huán)境下基于TCP套接字的文件傳輸例程剖析
2.4.7 LINIX/Linux環(huán)境下基于TCP套接字的音頻傳輸例程剖析.
2.4.8 Windows環(huán)境下基于TCP套接字的圖像傳輸例程剖析
2.4.9 Windows環(huán)境下基于TCP套接字的視頻傳輸例程剖析
2.5 本章小結
本章習題
第3章 服務器與客戶進程中的并發(fā)機制
3.1服務器與客戶進程中的并發(fā)概念
3.1.1 服務器進程中的并發(fā)問題
3.1.2 客戶進程中的并發(fā)問題
3.1.3 服務器與客戶端并發(fā)性的實現(xiàn)方法
3.1.4 循環(huán)服務器與并發(fā)服務器
3.1.5 多進程與多線程并發(fā)概念
3.1.6 并發(fā)等級
3.2 UNIX/Linux環(huán)境下基于多進程并發(fā)機制
3.2.1 創(chuàng)建一個新進程
3.2.2 終止一個進程
3.2.3 獲得一個進程的進程標識
3.2.4 獲得一個進程的父進程的進程標識
3.2.5 僵尸進程的清除
3.2.6 多進程例程剖析
3.3 UNIX/Linux環(huán)境下基于多線程的并發(fā)機制
3.3.1 創(chuàng)建一個新線程
3.3.2 設置線程的運行屬性
3.3.3 終止一個線程
3.3.4 獲得一個線程的線程標識
3.3.5 多線程例程剖析
3.4 windows環(huán)境下基于多進程的并發(fā)機制
3.4.1 創(chuàng)建一個新進程
3.4.2 打開一個進程
3.4.3 終止/關閉一個進程
3.4.4 獲得進程的可執(zhí)行文件或DLL對應的句柄
3.4.5 獲取與指定窗口關聯(lián)在一起的一個進程和線程標識符
3.4.6 獲取進程的運行時間
3.4.7 獲取當前進程ID
3.4.8 等待子進程/子線程的結束
3.4.9 多進程例程剖析
3.5 Windows環(huán)境下基于多線程的并發(fā)機制
3.5.1 在本地進程中創(chuàng)建~個新線程
3.5.2 在遠程進程中創(chuàng)建一個新線程
3.5.3 獲。O置線程的優(yōu)先級
3.5.4 終止一個線程
3.5.5 掛起/啟動一個線程
3.5.6 獲得一個線程的標識
3.5.7 多線程例程剖析
3.6 從線程/進程分配技術
3.6.1 從線程/進程預分配技術
3.6.2 延遲的從線程/進程分配技術
3.6.3 兩種從線程/進程分配技術的結合
3.7 基于多進程與基于多線程的并發(fā)機制的性能比較
3.7.1 多進程與多線程的任務執(zhí)行效率比較
3.7.2 多進程與多線程的創(chuàng)建與銷毀效率比較
3.8 本章小結
本章習題
第4章 多進程并發(fā)機制的實現(xiàn)原理與方法
4.1 多進程并發(fā)TCP服務器與客戶端進程結構
4.1.1 多進程并發(fā)TCP服務器進程結構
4.1.2 多進程并發(fā)客戶端進程結構
4.2 UNIx/Linux環(huán)境下多進程并發(fā)TCP服務器軟件設計流程
4.2.1 不固定進程數的并發(fā)TCP服務器軟件設計流程
4.2.2 固定進程數的并發(fā)TCP服務器軟件設計流程
4.3 UNIX/Linux環(huán)境下多進程并發(fā)TCP服務器通信實現(xiàn)例程
4.3.1 不固定進程數的多進程并發(fā)TCP服務器通信實現(xiàn)例程
4.3.2 固定進程數的多進程并發(fā)TCP服務器通信實現(xiàn)例程
4.3.3 UNIX/Linux服務器與Windows客戶端通信實現(xiàn)例程
4.3.4 基于SMTP和POP3協(xié)議的電子郵件收發(fā)實現(xiàn)例程
4.4 本章小結
本章習題
第5章 多線程并發(fā)TCP服務器軟件的實現(xiàn)原理與方法
5.1線程之間的協(xié)調與同步
5.1.1 UNIX/Linux環(huán)境下線程之間的協(xié)調與同步
5.1.2 Windows環(huán)境下線程之間的協(xié)調與同步
5.2 基于多線程的并發(fā)TCP服務器軟件設計流程
5.2.1 不固定線程數的并發(fā)TcP服務器軟件設計流程
5.2.2 固定線程數的并發(fā)TCP服務器軟件設計流程
5.3 多線程并發(fā)TCP服務器實現(xiàn)例程
5.3.1 UNIX/Linux環(huán)境下多線程并發(fā)TCP服務器實現(xiàn)例程
5.3.2 Windows環(huán)境下多線程并發(fā)TCP服務器實現(xiàn)例程
5.4 本章小結
本章習題
第6章 單線程并發(fā)機制的實現(xiàn)原理與方法
6.1 單線程并發(fā)TCP服務器與客戶端的進程結構
6.1.1 單線程并發(fā)TCP服務器的進程結構
6.1.2 單線程并發(fā)TCP客戶端的進程結構
6.2 單線程并發(fā)TCP服務器軟件的設計流程
6.2.1 IJNIX/Linux環(huán)境下單線程并發(fā)TCP服務器軟件設計流程
6.2.2 Windows環(huán)境下單線程并發(fā)TcP服務器軟件設計流程
6.3 單線程并發(fā)TCP服務器實現(xiàn)例程
6.3.1 UNIX/Linux環(huán)境下單線程并發(fā)TCP服務器實現(xiàn)例程
6.3.2 Windows環(huán)境下單線程并發(fā)TCP服務器實現(xiàn)例程
6.3.3 UNIX/Linux環(huán)境下單線程并發(fā)TCP客戶端實現(xiàn)例程
6.3.4 Windows環(huán)境下單線程并發(fā)TcP客戶端實現(xiàn)例稗
6.4 本章小結
本章習題
第7章 基于POOL和EPOLL的并發(fā)機制與實現(xiàn)方法
7.1 P00L簡介
7.1.1 POOL的定義
7.1.2 線程池的基本工作原理
7.1.3 線程池的應用范圍
7.1.4 使用線程池的風險
7.2 UNIX/Linux環(huán)境下線程池的C語言實現(xiàn)例程
7.2.1 線程池的主要組成部分
7.2.2 線程池的C語言實現(xiàn)例程剖析
7.2.3 基于線程池的并發(fā)TCP服務器例程
7.4 EPOLL簡介
7.4.1 EPOLL的定義
7.4.2 EPOLL的基本接口函數
7.4.3 EPOLL的事件模式
7.4.4 EPOLL的工作原理
7.5 基于EPOLL線程池的C語言例程
7.5.1 基于EPOLL線程池的C語言例程剖析
7.5.2 基于EPOLL的并發(fā)TCP服務器例程
7.6 本章小結
本章習題
第8章 客戶/服務器系統(tǒng)中的死鎖問題
8.1 死鎖的定義
8.2 產生死鎖的原因
8.2.1 競爭資源引起進程死鎖
8.2.2 進程推進順序不當引起死鎖
8.3 產生死鎖的必要條件
8.4 處理死鎖的基本方法
8.5 存在死鎖問題的多線程例程
8.6 本章小結
本章習題
附錄A GCC編譯器簡介
A.1 GCC編譯器所支持的源程序格式
A.2 GCC編譯選項解析
A.2.1 GCC編譯洗項分類
A.2.2 GCC編譯過程解析
A.2.3 多個程序文件的編譯
A.3 GCC編譯器的安裝
附錄B課程實驗
B.1 課程實驗報告模板
B.2 《Socket API函數調用方法》課程實驗
B.3 《電子郵件收發(fā)系統(tǒng)的設計與實現(xiàn)》課程實驗
B.4 《文本聊天系統(tǒng)的設計與實現(xiàn)》課程實驗
B.5 《多媒體網絡聊天系統(tǒng)的設計與實現(xiàn)》課程實驗
參考文獻