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