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