Windows網(wǎng)絡(luò)編程案例教程(21世紀(jì)高等學(xué)校規(guī)劃教材 計(jì)算機(jī)應(yīng)用)
定 價(jià):44.5 元
叢書名:21世紀(jì)高等學(xué)校規(guī)劃教材·計(jì)算機(jī)應(yīng)用
- 作者:董相志 編著
- 出版時(shí)間:2014/1/1
- ISBN:9787302344896
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP316.86
- 頁碼:414
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書針對(duì)有C/C++語言基礎(chǔ)的網(wǎng)絡(luò)編程初學(xué)者,以WinSock API和MFC Sockets為編程主線,以通俗易懂的方法介紹Windows平臺(tái)下的網(wǎng)絡(luò)編程方法,引導(dǎo)讀者循序漸進(jìn)地提高網(wǎng)絡(luò)編程能力。本書內(nèi)容豐富,涵蓋了網(wǎng)絡(luò)編程模型、P2P網(wǎng)絡(luò)模型、Windows網(wǎng)絡(luò)編程、WinSock2 API編程、阻塞/非阻塞模式套接字編程、異步套接字編程、Blocking I/O編程、select I/O編程、WSAAsyncSelect I/O編程、WSAEventSelect I/O編程、Overlapped I/O編程、I/O Completion Port編程、MFC套接字編程、WinInet API編程、MFC WinInet編程、FTP編程、HTTP編程、SMTP/POP3編程、Windows多線程編程、WinPcap編程、網(wǎng)絡(luò)五子棋的設(shè)計(jì)與實(shí)現(xiàn)等。
本書是編者在多年教學(xué)和實(shí)踐工作的基礎(chǔ)上編寫的,其語言生動(dòng)流暢,分析深入淺出,步驟精煉,圖文并茂。本書注重應(yīng)用、強(qiáng)調(diào)實(shí)踐,案例編碼覆蓋主流技術(shù)和方法,能夠幫助讀者快速地學(xué)以致用。本書可作為各類學(xué)校的網(wǎng)絡(luò)編程專業(yè)教材,也可作為網(wǎng)絡(luò)編程人員的自學(xué)參考用書。
互聯(lián)網(wǎng)編程有兩個(gè)主流方向: 一個(gè)是Web開發(fā); 另一個(gè)是網(wǎng)絡(luò)編程。從應(yīng)用層面看,前者看起來相對(duì)高端,后者看起來偏中低端。大家耳熟能詳?shù)木W(wǎng)站類應(yīng)用,如網(wǎng)易、搜狐、新浪、淘寶等屬于前者,稱做Web應(yīng)用。而另一些“遍地開花”的應(yīng)用,如QQ、MSN、迅雷、PPLive、Skype、防火墻、網(wǎng)絡(luò)監(jiān)控、流量計(jì)費(fèi)、IIS服務(wù)器、Tomcat服務(wù)器等屬于后者,稱做網(wǎng)絡(luò)工具。
開發(fā)Web應(yīng)用,它的底層支撐平臺(tái)是Web服務(wù)器; 開發(fā)網(wǎng)絡(luò)工具,它的底層支撐平臺(tái)是操作系統(tǒng)。大家所說的Web開發(fā)和網(wǎng)絡(luò)編程一個(gè)高端、一個(gè)中低端即源于此。如果硬要在二者之間劃出一個(gè)嚴(yán)格的界限是不甚妥當(dāng)?shù)摹,F(xiàn)在的技術(shù)趨勢(shì)是你中有我,我中有你,相互融合,“上九天攬?jiān),下五洋捉鱉”可謂當(dāng)下互聯(lián)網(wǎng)編程的真實(shí)寫照。本書內(nèi)容定位于網(wǎng)絡(luò)工具的編程方法,基礎(chǔ)根基是操作系統(tǒng),不討論基于Web服務(wù)器的Web編程。
“網(wǎng)絡(luò)編程”這門課到底應(yīng)該選用哪種語言教學(xué),不少老師感到很困惑。通常,用Java語言編的程序離不開JVM虛擬機(jī)支持,用C#語言編的程序離不開.NET虛擬機(jī)支持,且Java語言和C#語言非常適合Web編程。Windows操作系統(tǒng)是用C/C++語言編寫的,顯然,C/C++更適合網(wǎng)絡(luò)編程這門課,更適合開發(fā)互聯(lián)網(wǎng)中神通廣大、中流砥柱的應(yīng)用。
本書設(shè)計(jì)了兩條教學(xué)主線: 一條是基于Windows API編程; 另一條是基于MFC編程。對(duì)于前者,具體到WinSock2 API編程; 對(duì)于后者,具體到CAsyncSocket類、CSocket類編程。這兩條教學(xué)主線相互對(duì)照,相得益彰,構(gòu)成本書教學(xué)的核心和靈魂。
本書內(nèi)容共分為9章。第1章網(wǎng)絡(luò)編程概述,討論了網(wǎng)絡(luò)編程模型、P2P網(wǎng)絡(luò)模型、Windows網(wǎng)絡(luò)編程。第2章WinSock2 API編程,講述Win32 API窗體編程、WinSock2 API編程框架、阻塞/非阻塞模式套接字編程、異步套接字編程、Blocking I/O編程、select I/O編程、WSAAsyncSelect I/O編程、WSAEventSelect I/O編程、Overlapped I/O編程、Completion Port編程。第3章MFC套接字編程,講述MFC套接字編程模型、CAsyncSocket類編程、CSocket類編程。第4~6章分別講述了Windows Internet編程、MFC Internet編程和SMTP/POP3編程。第7章Windows多線程編程,講述了用C和Win32 API編寫多線程以及用C++和MFC編寫多線程兩種方法。第8章WinPcap編程,講述了WinPcap編程框架和WinPcap編程應(yīng)用。第9章網(wǎng)絡(luò)五子棋,從實(shí)戰(zhàn)角度詳細(xì)講述人機(jī)對(duì)戰(zhàn)和網(wǎng)絡(luò)對(duì)戰(zhàn)項(xiàng)目的設(shè)計(jì)。
本書有幸得到魯東大學(xué)鄒海林教授、楊洪勇教授、徐邦海副教授、寇光杰副教授、李阿麗老師、曲海平博士、田生文博士和煙臺(tái)市財(cái)政局崔運(yùn)政博士審閱,并提出許多寶貴的意見,編者銘記于心。
本書有幸得到清華大學(xué)出版社支持,有幸得到教材事業(yè)部主任魏江江老師關(guān)注,有幸得到責(zé)任編輯黃芝老師嚴(yán)謹(jǐn)審校、精心編排,感激之情無以言表。
高山無聲,水流花開,各方涓涓細(xì)愛匯集于此,終使本書與讀者見面。
本書適合有C/C++語言基礎(chǔ)的讀者學(xué)習(xí),每一章都配有精選的案例或程序片段,有助于讀者反復(fù)揣摩、練習(xí)提高。本書完整的案例都在VC++2010環(huán)境下調(diào)試通過,涵蓋了主流技術(shù)和方法,體現(xiàn)了教學(xué)目的,貼近實(shí)際應(yīng)用。
互聯(lián)網(wǎng)如同一個(gè)巨大的天體飛船,裹挾著整個(gè)地球,全人類、全社會(huì)為之瘋狂,為之飛奔。人們無從準(zhǔn)確地知曉它的終點(diǎn),更無從清晰地預(yù)見它的未來,能夠唯一感受到的是它驚人的發(fā)展速度,能夠唯一體會(huì)到的是它無窮的變化方式;蛟S正因如此,互聯(lián)網(wǎng)編程是極具魅力與挑戰(zhàn)的,吸引著越來越多的人進(jìn)入這個(gè)行業(yè)。但由于編者水平有限,書中錯(cuò)誤或不妥之處在所難免,懇請(qǐng)各位讀者批評(píng)指正。
您的每一處指正,編者都如獲至寶,不勝感激(編者郵箱: upsunny2008@163.com)。
編者
2013年10月于山東煙臺(tái)
第1章網(wǎng)絡(luò)編程概述
1.1網(wǎng)絡(luò)編程模型
1.1.1開放系統(tǒng)互連參考模型
1.1.2TCP/IP協(xié)議棧模型
1.1.3套接字編程模型
1.1.4網(wǎng)間多線程會(huì)話模型
1.2P2P網(wǎng)絡(luò)模型
1.2.1P2P的發(fā)展背景
1.2.2三代P2P網(wǎng)絡(luò)
1.2.3P2P網(wǎng)絡(luò)分類
1.2.4P2P典型應(yīng)用舉例
1.3Windows網(wǎng)絡(luò)編程
1.3.1Windows網(wǎng)絡(luò)編程框架
1.3.2Windows網(wǎng)絡(luò)協(xié)議
1.3.3Windows Sockets編程模型 第1章網(wǎng)絡(luò)編程概述
1.1網(wǎng)絡(luò)編程模型
1.1.1開放系統(tǒng)互連參考模型
1.1.2TCP/IP協(xié)議棧模型
1.1.3套接字編程模型
1.1.4網(wǎng)間多線程會(huì)話模型
1.2P2P網(wǎng)絡(luò)模型
1.2.1P2P的發(fā)展背景
1.2.2三代P2P網(wǎng)絡(luò)
1.2.3P2P網(wǎng)絡(luò)分類
1.2.4P2P典型應(yīng)用舉例
1.3Windows網(wǎng)絡(luò)編程
1.3.1Windows網(wǎng)絡(luò)編程框架
1.3.2Windows網(wǎng)絡(luò)協(xié)議
1.3.3Windows Sockets編程模型
1.3.4WinSock2工作模式
1.3.5第一個(gè)網(wǎng)絡(luò)程序——hostent
習(xí)題1
第2章WinSock2 API編程
2.1Win32 API窗體編程
2.1.1彈出一個(gè)消息框
2.1.2創(chuàng)建一個(gè)窗體
2.1.3為窗體添加控件
2.2WinSock2 API編程框架
2.2.1WinSock2 API程序結(jié)構(gòu)
2.2.2WinSock2 API庫函數(shù)
2.2.3WinSock2的新發(fā)展
2.3阻塞/非阻塞模式套接字編程
2.3.1阻塞模式套接字客戶機(jī)編程
2.3.2阻塞模式套接字服務(wù)器編程
2.3.3非阻塞模式套接字客戶機(jī)編程
2.3.4非阻塞模式套接字服務(wù)器編程
2.3.5套接字錯(cuò)誤處理
2.4異步套接字編程
2.4.1異步套接字客戶機(jī)編程
2.4.2異步套接字服務(wù)器編程
2.4.3服務(wù)器響應(yīng)多客戶機(jī)的并發(fā)訪問
2.5WinSock2 I/O模型編程
2.5.1Blocking I/O模型
2.5.2select I/O模型
2.5.3WSAAsyncSelect I/O模型
2.5.4WSAEventSelect I/O模型
2.5.5Overlapped I/O模型
2.5.6I/O Completion Port模型
2.5.7I/O模型的選擇
習(xí)題2
第3章MFC套接字編程
3.1MFC套接字編程模型
3.1.1MFC編程框架
3.1.2CAsyncSocket類編程模型
3.1.3CSocket類編程模型
3.1.4派生套接字類
3.1.5MFC套接字類的阻塞/非阻塞模式
3.2CAsyncSocket類編程實(shí)例
3.2.1點(diǎn)對(duì)點(diǎn)通信功能和技術(shù)要點(diǎn)
3.2.2創(chuàng)建客戶機(jī)
3.2.3客戶機(jī)代碼分析
3.2.4創(chuàng)建服務(wù)器
3.2.5服務(wù)器代碼分析
3.2.6點(diǎn)對(duì)點(diǎn)通信客戶機(jī)與服務(wù)器聯(lián)合測(cè)試
3.3CSocket類編程實(shí)例
3.3.1聊天室功能和技術(shù)要點(diǎn)
3.3.2創(chuàng)建聊天室服務(wù)器
3.3.3聊天室服務(wù)器代碼分析
3.3.4創(chuàng)建聊天室客戶機(jī)
3.3.5聊天室客戶機(jī)代碼分析
3.3.6聊天室客戶機(jī)與服務(wù)器聯(lián)合測(cè)試
習(xí)題3
第4章Windows Internet編程
4.1WinInet API編程
4.1.1WinInet HINTERNET句柄
4.1.2WinInet通用API
4.1.3關(guān)閉HINTERNET句柄
4.2WinInet FTP編程
4.2.1FTP API簡(jiǎn)介
4.2.2FTP服務(wù)器文件目錄遍歷
4.2.3FTP服務(wù)器目錄導(dǎo)航
4.2.4創(chuàng)建和刪除FTP服務(wù)器目錄
4.2.5從FTP服務(wù)器上獲取文件
4.2.6上傳文件到FTP服務(wù)器
4.2.7從FTP服務(wù)器上刪除文件
4.2.8FTP服務(wù)器目錄或文件的重命名
4.3WinInet HTTP編程
4.3.1HTTP API基本操作
4.3.2HTTP Cookies編程
4.3.3HTTP Authentication編程
4.3.4HTTP URL編程
4.3.5獲取HTTP請(qǐng)求的頭部信息
習(xí)題4
第5章MFC Internet編程
5.1MFC WinInet概述
5.1.1MFC WinInet基本類
5.1.2MFC WinInet類之間的關(guān)聯(lián)
5.1.3MFC WinInet客戶機(jī)編程步驟
5.1.4MFC WinInet經(jīng)典編程模型
5.2簡(jiǎn)易FTP客戶機(jī)編程實(shí)例
5.2.1FTP客戶機(jī)/服務(wù)器模型
5.2.2功能定義與技術(shù)要點(diǎn)
5.2.3FTP服務(wù)器的搭建
5.2.4簡(jiǎn)易FTP客戶機(jī)的創(chuàng)建步驟
5.2.5主要代碼
5.2.6系統(tǒng)測(cè)試
5.3HTTP瀏覽器編程實(shí)例
5.3.1瀏覽器/服務(wù)器工作模型
5.3.2MFC CHtmlView編程模型
5.3.3MFCIE的功能和技術(shù)要點(diǎn)
5.3.4MFCIE的創(chuàng)建步驟
5.3.5MFCIE功能測(cè)試
習(xí)題5
第6章SMTP/POP3編程
6.1SMTP協(xié)議
6.1.1SMTP工作模型
6.1.2SMTP命令解析
6.1.3SMTP響應(yīng)狀態(tài)碼
6.2POP3協(xié)議
6.2.1POP3工作模型
6.2.2POP3命令解析
6.2.3用POP3命令與163郵箱會(huì)話
6.3MIME郵件擴(kuò)展
6.3.1MIME對(duì)電子郵件協(xié)議的擴(kuò)展
6.3.2MIME對(duì)郵件信頭的擴(kuò)展
6.3.3MIME郵件的內(nèi)容類型
6.3.4Base64編碼
6.4SMTP協(xié)議編程實(shí)例
6.4.1SMTP發(fā)送郵件工作模型
6.4.2功能和技術(shù)要點(diǎn)
6.4.3項(xiàng)目創(chuàng)建步驟
6.4.4主要代碼
6.4.5項(xiàng)目測(cè)試
6.5POP3協(xié)議編程實(shí)例
6.5.1POP3客戶機(jī)工作模型
6.5.2功能和技術(shù)要點(diǎn)
6.5.3項(xiàng)目創(chuàng)建步驟
6.5.4項(xiàng)目測(cè)試
習(xí)題6
第7章Windows多線程編程
7.1進(jìn)程與線程
7.1.1進(jìn)程與線程的關(guān)系
7.1.2Windows進(jìn)程的內(nèi)存結(jié)構(gòu)
7.1.3Windows線程的優(yōu)先級(jí)
7.2用C和Win32 API編寫多線程
7.2.1Win32 API線程編程
7.2.2用C語言編寫多線程
7.2.3線程同步
7.2.4創(chuàng)建多線程的步驟
7.2.5多線程程序——笑臉
7.3用C++和MFC編寫多線程
7.3.1MFC線程類
7.3.2用戶界面線程
7.3.3工作線程
7.3.4線程同步類
7.3.5MFC多線程程序——自行車比賽
習(xí)題7
第8章WinPcap編程
8.1WinPcap概述
8.1.1WinPcap的功能
8.1.2Wireshark網(wǎng)絡(luò)分析工具
8.1.3WinDump網(wǎng)絡(luò)嗅探工具
8.1.4WinPcap的獲取和安裝
8.1.5WinPcap工作模型
8.1.6NPF與NDIS的關(guān)系
8.1.7NPF工作模型
8.1.8WinPcap開發(fā)環(huán)境配置
8.2WinPcap編程框架
8.2.1結(jié)構(gòu)體與宏定義
8.2.2WinPcap API函數(shù)
8.2.3過濾器表達(dá)式
8.2.4程序的創(chuàng)建和測(cè)試
8.3WinPcap編程應(yīng)用
8.3.1獲取網(wǎng)絡(luò)設(shè)備列表
8.3.2打開適配器捕獲數(shù)據(jù)包
8.3.3捕獲和打印所有數(shù)據(jù)包
8.3.4過濾數(shù)據(jù)包
8.3.5分析數(shù)據(jù)包
8.3.6統(tǒng)計(jì)網(wǎng)絡(luò)流量
習(xí)題8
第9章網(wǎng)絡(luò)五子棋
9.1五子棋簡(jiǎn)介
9.1.1棋盤和棋子
9.1.2五子棋術(shù)語
9.1.3行棋規(guī)則
9.1.4五子棋的人機(jī)博弈
9.1.5如何判斷勝負(fù)
9.2人機(jī)對(duì)戰(zhàn)系統(tǒng)設(shè)計(jì)
9.2.1功能需求
9.2.2創(chuàng)建項(xiàng)目程序框架
9.2.3導(dǎo)入資源文件
9.2.4主菜單設(shè)計(jì)
9.2.5人機(jī)對(duì)戰(zhàn)項(xiàng)目類圖
9.2.6消息結(jié)構(gòu)體設(shè)計(jì)
9.2.7人機(jī)對(duì)戰(zhàn)邏輯模型
9.2.8游戲基類CGame的設(shè)計(jì)
9.2.9人機(jī)對(duì)戰(zhàn)類COneGame的設(shè)計(jì)
9.2.10棋盤類CTable的設(shè)計(jì)
9.2.11界面類CFiveDlg的設(shè)計(jì)
9.2.12項(xiàng)目測(cè)試
9.3網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)設(shè)計(jì)
9.3.1擴(kuò)展功能需求
9.3.2定義對(duì)話消息
9.3.3網(wǎng)絡(luò)對(duì)戰(zhàn)新增界面元素
9.3.4網(wǎng)絡(luò)對(duì)戰(zhàn)基本類圖
9.3.5網(wǎng)絡(luò)對(duì)戰(zhàn)通信模型
9.3.6CFiveSocket類的設(shè)計(jì)
9.3.7CTwoGame類的設(shè)計(jì)
9.3.8修改CTable類的設(shè)計(jì)
9.3.9CServerDlg類和CClientDlg類的設(shè)計(jì)
9.3.10CNameDlg類和CStatDlg類的設(shè)計(jì)
9.3.11完善CFiveDlg類的設(shè)計(jì)
9.3.12項(xiàng)目測(cè)試
習(xí)題9
參考文獻(xiàn)