VisuaIC++2017網絡編程實戰 版權信息
- ISBN:9787302540205
- 條形碼:9787302540205 ; 978-7-302-54020-5
- 裝幀:平裝-膠訂
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
VisuaIC++2017網絡編程實戰 本書特色
本書從初學者的角度出發,以通俗易懂的語言,配合豐富多彩的實例,詳細地介紹了使用Visual C 2017進行網絡編程應該掌握的各方面知識,以及網絡編程的常見場景和較難技術,快速提高開發技能。 全書共分18章,內容包括TCP/IP協議、本機網絡信息編程、多線程編程、套接字編程、簡單網絡服務器設計、基于IO模型的網絡開發、網絡性能工具iperf的使用、WinInet開發瀏覽器實例、HTTP編程、Web編程、中國象棋網絡對弈實例、winpcap編程、ICE網絡編程和IPv6網絡編程。 本書適合Visual C 網絡編程初學者閱讀,可供開發人員查閱參考,也適合作為高等院校相關專業的教學參考書。
VisuaIC++2017網絡編程實戰 內容簡介
Visual C 2017在Windows應用程序開發工具中占有重要的地位,而網絡編程又是VC一線開發中的重中之重。本書針對Visual C 2017中的網絡開發理論和開發技巧,從基本的內容講起,盡量使用簡單易懂的語言表達,并配合相應的實例,以加深讀者的理解。對于其中的技術細節,都盡量講深講透,為讀者提供翔實可靠的技術資料。
VisuaIC++2017網絡編程實戰 目錄
目 錄
第1章 TCP/IP協議基礎 1
1.1 什么是TCP/IP 1
1.2 TCP/IP協議的分層結構 1
1.3 應用層 5
1.3.1 DNS 5
1.3.2 端口的概念 6
1.4 傳輸層 6
1.4.1 TCP協議 7
1.4.2 UDP協議 7
1.5 網絡層 8
1.5.1 IP協議 8
1.5.2 ARP協議 15
1.5.3 RARP協議 16
1.5.4 ICMP協議 17
1.6 數據鏈路層 26
1.6.1 數據鏈路層的基本概念 26
1.6.2 數據鏈路層的主要功能 26
1.7 一些容易混淆的術語 27
1.7.1 MTU 27
1.7.2 IP分組的分片問題 28
1.7.3 數據段 28
1.7.4 數據報 28
1.7.5 數據包 28
1.7.6 數據幀 29
1.7.7 比特流 29
第2章 本機網絡信息編程 30
2.1 獲取本地計算機的名稱和IP 30
2.1.1 gethostname函數 30
2.1.2 gethostbyname函數 30
2.1.3 inet_ntoa函數 31
2.2 獲取本機子網IP地址和子網掩碼 34
2.3 獲取本機物理網卡地址信息 36
2.4 獲取本機所有網卡(包括虛擬網卡)的列表和信息 38
2.5 獲取本地計算機的IP協議統計數據 41
2.6 獲取本機的DNS地址 44
2.7 獲取本機上的TCP統計數據 46
2.8 獲取本機上的UDP統計數據 49
2.9 獲取本機上支持的網絡協議信息 50
2.10 獲取本地計算機的域名 52
第3章 多線程編程 54
3.1 多線程編程的基本概念 54
3.1.1 為何要用多線程 54
3.1.2 操作系統和多線程 54
3.1.3 進程和線程 55
3.1.4 線程調度 56
3.1.5 線程函數 59
3.1.6 線程對象和句柄 59
3.1.7 線程對象的安全屬性 59
3.1.8 線程標識 60
3.1.9 多線程編程的3種庫 60
3.2 利用Win32 API函數進行多線程開發 60
3.2.1 線程的創建 61
3.2.2 線程的結束 65
3.2.3 線程和MFC控件交互 71
3.2.4 線程的暫停和恢復 78
3.2.5 消息線程和窗口線程 81
3.2.6 線程同步 84
3.3 CRT庫中的多線程函數 97
3.4 MFC多線程開發 105
3.4.1 線程的創建 106
3.4.2 線程同步 109
第4章 套接字基礎 124
4.1 套接字基本概念 124
4.1.1 網絡程序的架構 125
4.1.2 套接字的類型 126
4.2 套接字地址 127
4.2.1 通用socket地址 127
4.2.2 專用socket地址 128
4.2.3 IP地址的轉換 129
4.2.4 主機字節序和網絡字節序 131
4.2.5 I/O工作模式和I/O模型 133
第5章 TCP套接字編程 134
5.1 TCP套接字編程的基本步驟 134
5.2 協議簇和地址簇 134
5.3 socket地址 136
5.3.1 通用socket地址 137
5.3.2 專用socket地址 138
5.3.3 IP地址的轉換 139
5.3.4 獲取套接字地址 141
5.4 TCP套接字編程的相關函數 143
5.4.1 WSAStartup函數 143
5.4.2 socket/WSASocket函數 143
5.4.3 bind函數 145
5.4.4 listen函數 147
5.4.5 accept/ WSAAccept函數 147
5.4.6 connect/WSAConnect函數 148
5.4.7 send/ WSASend函數 148
5.4.8 recv/ WSARecv函數 148
5.4.9 closesocket函數 149
5.4.10 inet_addr函數 149
5.4.11 inet_ntoa函數 149
5.4.12 htonl函數 149
5.4.13 htons函數 150
5.4.14 WSAAsyncSelect函數 150
5.4.15 WSACleanup函數 151
5.5 簡單的TCP套接字編程 151
5.6 深入理解TCP編程 156
5.6.1 數據發送和接收涉及的緩沖區 156
5.6.2 TCP數據傳輸的特點 157
5.6.3 數據發送的6種情形 157
5.6.4 數據接收時碰到的情形 159
5.6.5 一次請求響應的數據接收 160
5.6.6 多次請求響應的數據接收 165
5.7 I/O控制命令 176
5.8 套接字選項 180
5.8.1 基本概念 180
5.8.2 選項的級別 180
5.8.3 獲取套接字選項 182
5.8.4 設置套接字選項 187
第6章 UDP套接字編程 190
6.1 UDP套接字編程的基本步驟 190
6.2 UDP套接字編程的相關函數 192
6.2.1 sendto/WSASendto函數 192
6.2.2 recvfrom/WSARecvfrom函數 192
6.3 實戰UDP套接字 192
6.4 UDP丟包及無序問題 199
第7章 原始套接字編程 200
7.1 原始套接字概述 200
7.2 原始套接字的強大功能 200
7.3 原始套接字的基本編程步驟 202
7.3.1 創建原始套接字函數socket 202
7.3.2 接收函數recvfrom 204
7.3.3 發送函數sendto 206
7.4 常規編程示例 206
7.5 抓取所有IP數據包 214
7.6 抓取所有IP數據包 220
第8章 MFC套接字編程 227
8.1 概述 227
8.2 類CAsyncSocket 227
8.2.1 基本概念 227
8.2.2 成員函數 228
8.2.3 基本用法 232
8.2.4 網絡事件處理 234
8.3 類CSocket 243
8.3.1 基本概念 243
8.3.2 成員函數 244
8.3.3 基本用法 245
8.4 基于CAsyncSocket的網絡五子棋 250
8.4.1 概述 250
8.4.2 五子棋簡介 251
8.4.3 軟件總體架構 251
8.4.4 棋盤類—CTable 252
8.4.5 游戲模式類—CGame 254
8.4.6 消息機制 256
8.4.7 主要算法 259
第9章 簡單的網絡服務器設計 266
9.1 循環服務器 266
9.1.1 UDP循環服務器 266
9.1.2 TCP循環服務器 267
9.2 多線程并發服務器 271
9.3 I/O復用服務器 272
第10章 基于I/O模型的網絡開發 273
10.1 同步和異步 273
10.1.1 同步 273
10.1.2 異步 274
10.2 阻塞和非阻塞 274
10.2.1 阻塞 274
10.2.2 非阻塞 275
10.3 同步/異步和阻塞/非阻塞的關系 276
10.4 I/O和網絡I/O 276
10.5 I/O模式 277
10.5.1 阻塞模式 277
10.5.2 非阻塞模式 278
10.6 I/O模型 278
10.7 選擇模型 279
10.7.1 基本概念 279
10.7.2 select函數 280
10.7.3 實戰select模型 282
10.8 異步選擇模型WSAAsyncSelect 288
10.8.1 基本概念 288
10.8.2 WSAAsyncSelect函數 289
10.8.3 實戰WSAAsyncSelect模型 291
10.9 事件選擇模型 303
10.9.1 基本概念 303
10.9.2 WSAEventSelect函數 303
10.9.3 實戰WSAEventSelect模型 304
10.10 重疊I/O模型 309
10.10.1 基本概念 309
10.10.2 創建重疊I/O模型下的套接字 312
10.10.3 獲取重疊I/O操作完成結果 313
10.10.4 基于事件通知(有64個socket的限制) 314
10.10.5 基于完成例程 321
10.11 完成端口 335
10.11.1 基本概念 335
10.11.2 完成端口能干什么 336
10.11.3 完成端口的優勢 336
10.11.4 完成端口編程的基本流程 337
10.11.5 相關API 338
第11章 網絡性能工具iperf的使用 348
11.1 iperf概述 348
11.2 iperf的特點 348
11.3 iperf的工作原理 348
11.4 iperf的主要功能 350
11.5 iperf中Linux下的使用 350
11.5.1 在Linux下安裝iperf 351
11.5.2 iperf的簡單使用 352
11.6 iperf中Windows下的使用 353
11.6.1 命令行版本 353
11.6.2 圖形化版本 353
第12章 WinInet開發Internet客戶端 355
12.1 什么是WinInet 355
12.2 認識WinInet API函數 355
12.2.1 通用WinInet API函數 356
12.2.2 WinInet HTTP函數 361
12.2.3 WinInet FTP函數 363
12.2.4 WinInet Gopher函數 364
12.2.5 讀取HTTP網頁數據 364
12.3 認識MFC WinInet類庫 366
12.3.1 訪問HTTP服務器的一般流程 367
12.3.2 訪問FTP服務器的流程 368
12.4 FTP開發 369
12.4.1 FTP概述 369
12.4.2 FTP的工作原理 370
12.4.3 FTP的傳輸方式 371
12.4.4 FTP的工作方式 371
12.4.5 FTP命令 372
12.4.6 FTP應答碼 375
12.4.7 開發FTP客戶端 377
第13章 HTTP網絡編程 390
13.1 HTTP簡介 390
13.2 HTTP的工作原理 390
13.3 HTTP的特點 391
13.4 HTTP的消息結構 391
13.5 客戶端請求消息 392
13.6 服務器響應消息 393
13.7 HTTP狀態碼 394
13.8 HTTP狀態碼分類 394
13.9 實現HTTP服務器 395
13.9.1 概述 395
13.9.2 界面設計 395
13.9.3 類CWebServerApp 396
13.9.4 類CWebServerDlg 396
13.9.5 類CLog 397
13.9.6 類CGenericServer 398
13.9.7 類CHTTPServer 404
13.9.8 運行結果 409
第14章 C Web編程 411
14.1 CGI程序的工作方式 411
14.2 架設Web服務器Apache 412
14.3 ActiveX、OLE和COM 415
14.4 什么是OCX 415
14.5 ActiveX 416
14.6 ActiveX控件 416
14.6.1 生成和注冊ActiveX控件 416
14.6.2 在網頁html中使用ActiveX控件 420
14.6.3 在MFC應用程序中使用ActiveX控件 422
14.6.4 在測試容器中使用(測試)ActiveX控件 424
14.6.5 在網頁的JavaScript中使用控件 426
14.7 為ActiveX控件添加對話框 428
14.8 為ActiveX控件添加事件 432
14.8.1 常用事件 432
14.8.2 自定義事件 434
14.9 為ActiveX控件添加方法 438
14.9.1 常用方法 438
14.9.2 自定義方法 439
第15章 中國象棋網上對弈系統 441
15.1 電腦游戲概述 441
15.2 系統概述 442
15.3 系統運行結果 443
15.4 系統構成 443
15.5 數據結構 443
15.5.1 棋盤 443
15.5.2 棋子信息數組 445
15.5.3 變量與函數 445
15.6 圖像繪制 446
15.6.1 主窗口 446
15.6.2 棋盤的繪制 447
15.6.3 棋子的繪制及初始化 447
15.6.4 動態顯示 448
15.6.5 回看功能 449
15.7 規則設置 449
15.7.1 棋子規則 449
15.7.2 規則算法 450
15.8 網絡通信 451
15.8.1 CCOM類 451
15.8.2 數據代碼 452
15.8.3 數據更新 453
15.8.4 聊天功能 453
15.9 棋子操作 453
15.9.1 獲取點擊 453
15.9.2 走棋判斷 454
15.9.3 光標變化 455
15.10 主框架重要函數解析 455
15.10.1 WinMain函數 455
15.10.2 InitInstance函數 456
15.11 通信函數解析 457
15.11.1 Listen函數 457
15.11.2 ListenThread函數 458
15.11.3 SendMsg函數 460
15.12 象棋業務邏輯重要函數解析 461
15.12.1 Graphics函數 461
15.12.2 Draw函數 462
15.12.3 InitChessBoard函數 463
15.12.4 ChessRule函數 464
第16章 WinPcap編程 474
16.1 什么是WinPcap 474
16.2 WinPcap的歷史 474
16.3 WinPcap的功能 475
16.4 WinPcap的應用領域 475
16.5 WinPcap不能做什么 476
16.6 WinPcap組成結構 476
16.7 WinPcap內核層NPF 477
16.8 WinPcap的數據結構和主要功能函數 478
16.8.1 網絡接口的地址 478
16.8.2 數據包頭的格式 479
16.8.3 pcap文件格式 479
16.8.4 獲得網卡列表pcap_findalldevs 480
16.8.5 釋放空間函數pcap_freealldevs 481
16.8.6 打開網絡設備函數pcap_open_live 481
16.8.7 捕獲數據包pcap_loop 482
16.8.8 捕獲數據包pcap_dispatch 483
16.8.9 捕獲數據包pcap_next_ex 483
16.9 搭建WinPcap的開發環境 484
16.9.1 WinPcap通信庫的安裝 484
16.9.2 準備開發包 486
16.9.3 **個WinPcap應用程序 487
16.9.4 捕獲訪問Web站點的網絡包 488
第17章 ICE網絡編程 494
17.1 ICE簡介 494
17.2 ICE的優勢 494
17.3 ICE的工作原理 495
17.4 ICE調用模式 495
17.5 客戶端與服務器端的結構 496
17.6 ICE的下載、安裝和配置 496
17.6.1 下載ICE 496
17.6.2 安裝ICE 497
17.6.3 安裝第三方庫 498
17.6.4 配置ICE環境變量 499
17.7 ICE的使用 500
第18章 IPv6網絡編程 501
18.1 IPv4的現狀和不足 501
18.1.1 地址空間、地址方案與選路的問題 502
18.1.2 網絡管理與配置的問題 505
18.1.3 服務類型問題 507
18.1.4 IP選項的問題 507
18.1.5 IPv4安全性問題 508
18.2 是增加補丁還是徹底升級改進 508
18.3 IPv6的概念 509
18.4 IPv6的發展歷史 509
18.5 IPv6的特點 511
18.6 IPv6地址 511
18.6.1 IPv6地址表示方法 511
18.6.2 IPv6 前綴 513
18.6.3 IPv6地址的類型 513
18.7 IPv6數據報格式 517
18.8 基于IPv6的 Socket網絡編程技術 522
18.8.1 地址表示 522
18.8.2 IPv6的Socket API函數 523
18.8.3 IPv6下編寫應用程序的注意點 524
18.8.4 實戰IPv6 524
展開全部
VisuaIC++2017網絡編程實戰 作者簡介
朱晨冰,計算機應用專業碩士,10多年C\C 開發經驗。精通Linux、Windows系統開發及數據庫開發技術。