段利國(guó),博士,太原理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院副教授,碩士生導(dǎo)師,中國(guó)計(jì)算機(jī)學(xué)會(huì)高級(jí)會(huì)員,ACM會(huì)員。發(fā)表核心期刊以上級(jí)別學(xué)術(shù)論文16篇;主持山西省省自然科學(xué)基金一項(xiàng)、山西省教改項(xiàng)目一項(xiàng);參與國(guó)家、省部級(jí)縱向科研項(xiàng)目6項(xiàng);獲山西省教學(xué)成果二等獎(jiǎng)兩項(xiàng)。參編多本教材,其中《多媒體技術(shù)及應(yīng)用》被評(píng)為普通高等教育***“十一五”規(guī)劃教材。
第1章 概述 1
1.1 網(wǎng)絡(luò)編程相關(guān)的基本概念 1
1.1.1 網(wǎng)絡(luò)編程與進(jìn)程通信 1
1.1.2 Internet中網(wǎng)間進(jìn)程的標(biāo)識(shí) 3
1.1.3 網(wǎng)絡(luò)協(xié)議的特征 7
1.2 三類網(wǎng)絡(luò)編程 10
1.2.1 基于TCP/IP協(xié)議棧的網(wǎng)絡(luò)編程 10
1.2.2 基于WWW應(yīng)用的網(wǎng)絡(luò)編程 10
1.2.3 基于.NET框架的Web Services網(wǎng)絡(luò)編程 10
1.3 客戶機(jī)/服務(wù)器交互模式 13
1.3.1 網(wǎng)絡(luò)應(yīng)用軟件的地位和功能 13
1.3.2 客戶機(jī)/服務(wù)器模式 14
1.3.3 客戶機(jī)與服務(wù)器的特性 15
1.3.4 容易混淆的術(shù)語 16
1.3.5 客戶機(jī)與服務(wù)器的通信過程 16
1.3.6 網(wǎng)絡(luò)協(xié)議與C/S模式的關(guān)系 17
1.3.7 錯(cuò)綜復(fù)雜的C/S交互 17
1.3.8 服務(wù)器如何同時(shí)為多個(gè)客戶機(jī)服務(wù) 18
1.3.9 標(biāo)識(shí)一個(gè)特定服務(wù) 20
1.4 P2P模式 21
1.4.1 P2P技術(shù)的興起 21
1.4.2 P2P的定義和特征 21
1.4.3 P2P的發(fā)展 22
1.4.4 P2P的關(guān)鍵技術(shù) 22
1.4.5 P2P系統(tǒng)的應(yīng)用與前景 22
習(xí)題 23
第2章 套接字網(wǎng)絡(luò)編程基礎(chǔ) 24
2.1 套接字網(wǎng)絡(luò)編程接口的產(chǎn)生與發(fā)展 24
2.1.1 問題的提出 24
2.1.2 套接字編程接口起源于UNIX操作系統(tǒng) 25
2.1.3 套接字編程接口在Windows和Linux操作系統(tǒng)中得到繼承和發(fā)展 25
2.1.4 套接字編程接口的兩種實(shí)現(xiàn)方式 25
2.1.5 套接字通信與UNIX操作系統(tǒng)的輸入/輸出的關(guān)系 26
2.2 套接字編程的基本概念 27
2.2.1 什么是套接字 27
2.2.2 套接字的特點(diǎn) 28
2.2.3 套接字的應(yīng)用場(chǎng)合 30
2.2.4 套接字使用的數(shù)據(jù)類型和相關(guān)的問題 30
2.3 面向連接的套接字編程 32
2.3.1 可靠的傳輸控制協(xié)議 32
2.3.2 套接字的工作過程 33
2.3.3 面向連接的套接字編程實(shí)例 34
2.3.4 進(jìn)程的阻塞問題和對(duì)策 40
2.4 無連接的套接字編程 43
2.4.1 高效的用戶數(shù)據(jù)報(bào)協(xié)議 43
2.4.2 無連接的套接字編程的兩種模式 43
2.4.3 數(shù)據(jù)報(bào)套接字的對(duì)等模式編程實(shí)例 45
2.5 原始套接字 47
2.5.1 原始套接字的創(chuàng)建 47
2.5.2 原始套接字的使用 48
2.5.3 原始套接字應(yīng)用實(shí)例 49
習(xí)題 51
第3章 WinSock編程 53
3.1 WinSock概述 53
3.2 WinSock庫函數(shù) 55
3.2.1 WinSock的注冊(cè)與注銷 55
3.2.2 WinSock的錯(cuò)誤處理函數(shù) 58
3.2.3 主要的WinSock函數(shù) 61
3.2.4 WinSock的輔助函數(shù) 74
3.2.5 WinSock的信息查詢函數(shù) 77
3.2.6 WSAAsyncGetXByY類型的擴(kuò)展函數(shù) 79
3.3 網(wǎng)絡(luò)應(yīng)用程序的運(yùn)行環(huán)境 82
習(xí)題 84
第4章 MFC編程 85
4.1 MFC概述 85
4.1.1 MFC是一個(gè)編程框架 85
4.1.2 典型的MDI應(yīng)用程序的構(gòu)成 87
4.2 MFC和Win32 89
4.2.1 MFC對(duì)象和Windows對(duì)象的關(guān)系 89
4.2.2 幾個(gè)主要的類 91
4.3 CObject類 95
4.3.1 CObject類的定義 95
4.3.2 CObject類的特性 96
4.4 消息映射的實(shí)現(xiàn) 98
4.5 MFC對(duì)象的創(chuàng)建 102
4.5.1 MFC對(duì)象的關(guān)系 102
4.5.2 MFC提供的接口 104
4.5.3 MFC對(duì)象的創(chuàng)建過程 104
4.6 應(yīng)用程序的退出 107
習(xí)題 107
第5章 MFC WinSock類的
編程 109
5.1 CAsyncSocket類 110
5.1.1 使用CAsyncSocket類的一般步驟 110
5.1.2 創(chuàng)建CAsyncSocket類對(duì)象 111
5.1.3 關(guān)于CAsyncSocket類可以接受并處理的消息事件 112
5.1.4 客戶端套接字對(duì)象請(qǐng)求連接到服務(wù)器端套接字對(duì)象 114
5.1.5 服務(wù)器接收客戶機(jī)的連接請(qǐng)求 115
5.1.6 發(fā)送與接收流式數(shù)據(jù) 116
5.1.7 關(guān)閉套接字 118
5.1.8 錯(cuò)誤處理 118
5.1.9 其他成員函數(shù) 119
5.2 CSocket類 120
5.2.1 創(chuàng)建CSocket對(duì)象 120
5.2.2 建立連接 120
5.2.3 發(fā)送和接收數(shù)據(jù) 120
5.2.4 CSocket類、CArchive類和CSocketFile類 121
5.2.5 關(guān)閉套接字和清除相關(guān)的對(duì)象 122
5.3 CSocket類的編程模型 122
5.4 用CAsyncSocket類實(shí)現(xiàn)聊天室程序 123
5.4.1 實(shí)現(xiàn)目標(biāo) 123
5.4.2 創(chuàng)建客戶端應(yīng)用程序 124
5.4.3 客戶端程序的類與消息驅(qū)動(dòng) 134
5.4.4 客戶端程序主要功能的代碼和分析 135
5.4.5 創(chuàng)建服務(wù)器端程序 142
5.4.6 服務(wù)器端程序的流程和消息驅(qū)動(dòng) 144
5.4.7 點(diǎn)對(duì)點(diǎn)交談的服務(wù)器端程序主要功能的代碼和分析 145
5.5 用CSocket類實(shí)現(xiàn)聊天室程序 151
5.5.1 聊天室程序的功能 151
5.5.2 創(chuàng)建聊天室的服務(wù)器端程序 151
5.5.3 聊天室服務(wù)器端程序的主要實(shí)現(xiàn)代碼和分析 154
5.5.4 創(chuàng)建聊天室的客戶端程序 162
5.5.5 聊天室客戶端程序的主要實(shí)現(xiàn)代碼和分析 163
習(xí)題 170
實(shí)驗(yàn) 170
第6章 WinInet編程 172
6.1 MFC WinInet類 172
6.1.1 概述 172
6.1.2 MFC WinInet所包含的類 173
6.1.3 使用WinInet類編程的一般步驟 174
6.1.4 創(chuàng)建CInternetSession類對(duì)象 175
6.1.5 查詢或設(shè)置Internet請(qǐng)求選項(xiàng) 176
6.1.6 創(chuàng)建連接類對(duì)象 177
6.1.7 使用文件檢索類 178
6.1.8 重載OnStatusCallback函數(shù) 179
6.1.9 創(chuàng)建并使用網(wǎng)絡(luò)文件類對(duì)象 180
6.1.10 CInternteException類 183
6.2 用MFC WinInet類實(shí)現(xiàn)FTP客戶端 183
6.2.1 程序要實(shí)現(xiàn)的功能 183
6.2.2 創(chuàng)建應(yīng)用程序的過程 184
習(xí)題 186
實(shí)驗(yàn) 187
第7章 WinSock的多線程
編程 188
7.1 WinSock為什么需要多線程編程 188
7.1.1 WinSock的兩種I/O模式 188
7.1.2 兩種模式的優(yōu)缺點(diǎn)及解決方法 189
7.2 Win32操作系統(tǒng)下的多進(jìn)程多線程機(jī)制 189
7.2.1 Win32 OS是單用戶多任務(wù)的操作系統(tǒng) 189
7.2.2 Win32 OS是支持多線程的操作系統(tǒng) 190
7.2.3 多線程機(jī)制在網(wǎng)絡(luò)編程中的應(yīng)用 191
7.3 VC++對(duì)多線程網(wǎng)絡(luò)編程的支持 192
7.3.1 MFC支持的兩種線程 192
7.3.2 創(chuàng)建MFC的工作線程 193
7.3.3 創(chuàng)建并啟動(dòng)用戶界面線程 195
7.3.4 終止線程 198
7.4 多線程FTP客戶端實(shí)例 200
7.4.1 編寫線程函數(shù) 200
7.4.2 添加事件處理函數(shù) 206
習(xí)題 208
第8章 WinSock的I/O模型 209
8.1 select模型 210
8.2 WSAAsyncSelect異步I/O模型 212
8.3 WSAEventSelect事件選擇模型 216
8.4 重疊I/O模型 221
8.4.1 重疊I/O模型的優(yōu)點(diǎn) 221
8.4.2 重疊I/O模型的基本原理 221
8.4.3 重疊I/O模型的關(guān)鍵函數(shù)和數(shù)據(jù)結(jié)構(gòu) 222
8.4.4 使用事件通知實(shí)現(xiàn)重疊模型的步驟 225
8.4.5 使用完成例程實(shí)現(xiàn)重疊模型的步驟 227
8.5 完成端口模型 229
8.5.1 什么是完成端口模型 229
8.5.2 使用完成端口模型的方法 230
習(xí)題 238
第9章 HTTP及高級(jí)編程 239
9.1 HTTP 239
9.1.1 HTTP的背景 239
9.1.2 HTTP的內(nèi)容 240
9.1.3 HTTP消息的一般格式 242
9.1.4 HTTP請(qǐng)求的格式 243
9.1.5 HTTP響應(yīng)的格式 245
9.1.6 訪問認(rèn)證 248
9.1.7 URL編碼 249
9.1.8 HTTP的應(yīng)用 250
9.2 利用CHtmlView類創(chuàng)建Web瀏覽器型的應(yīng)用程序 250
9.2.1 CHtmlView類與WebBrowser控件 250
9.2.2 CHtmlView類的成員函數(shù) 251
9.2.3 創(chuàng)建一個(gè)Web瀏覽器型的應(yīng)用程序的一般步驟 256
9.3 Web瀏覽器應(yīng)用程序?qū)嵗?61
9.3.1 程序?qū)崿F(xiàn)的目標(biāo) 261
9.3.2 創(chuàng)建實(shí)例程序 262
習(xí)題 265
實(shí)驗(yàn) 265
第10章 電子郵件協(xié)議與編程 267
10.1 電子郵件系統(tǒng)的工作原理 267
10.1.1 電子郵件的特點(diǎn) 267
10.1.2 電子郵件系統(tǒng)的構(gòu)成 267
10.1.3 電子郵件系統(tǒng)的實(shí)現(xiàn) 268
10.2 簡(jiǎn)單郵件傳送協(xié)議 270
10.2.1 概述 270
10.2.2 SMTP客戶機(jī)與SMTP服務(wù)器之間的會(huì)話 270
10.2.3 常用的SMTP命令 271
10.2.4 常用的SMTP響應(yīng)碼 273
10.2.5 SMTP的會(huì)話過程 274
10.2.6 使用WinSock來實(shí)現(xiàn)電子郵件客戶機(jī)與服務(wù)器的會(huì)話 274
10.3 電子郵件信件結(jié)構(gòu)詳述 275
10.3.1 Internet文本信件的格式標(biāo)準(zhǔn)——RFC 822 275
10.3.2 信件的頭部 276
10.3.3 構(gòu)造和分析符合RFC 822標(biāo)準(zhǔn)的電子信件 281
10.4 MIME編碼解碼與發(fā)送附件 281
10.4.1 MIME概述 281
10.4.2 MIME定義的新的信頭字段 282
10.4.3 MIME郵件的內(nèi)容類型 283
10.4.4 MIME郵件的編碼方式 292
10.5 POP3與接收電子郵件 294
10.5.1 POP3 294
10.5.2 POP3的會(huì)話過程 294
10.5.3 POP3會(huì)話的3個(gè)狀態(tài) 295
10.5.4 POP3標(biāo)準(zhǔn)命令 296
10.5.5 接收電子郵件的一般步驟 298
10.6 接收電子郵件的程序?qū)嵗?99
10.6.1 實(shí)例程序的目的和實(shí)現(xiàn)的技術(shù)要點(diǎn) 299
10.6.2 創(chuàng)建應(yīng)用程序的過程 301
10.7 發(fā)送電子郵件的程序?qū)嵗?02
10.7.1 實(shí)例程序的目的和實(shí)現(xiàn)的技術(shù)要點(diǎn) 302
10.7.2 創(chuàng)建應(yīng)用程序的過程 303
習(xí)題 305
參考文獻(xiàn) 307