欢迎访问学兔兔,学习、交流 分享 !

返回首页 |

Visual C++ 2017网络编程实战 朱晨冰著 2020年版

收藏
  • 大小:111.51 MB
  • 语言:中文版
  • 格式: PDF文档
  • 阅读软件: Adobe Reader
资源简介
Visual C++ 2017网络编程实战
作者:朱晨冰著
出版时间:2020年版
内容简介
《Visual C++ 2017网络编程实战》从初学者的角度出发,以通俗易懂的语言,配合丰富多彩的实例,详细地介绍了使用Visual C++ 2017进行网络编程应该掌握的各方面知识,以及网络编程的常见场景和较难技术,快速提高开发技能。全书共分18章,内容包括TCP/IP协议、本机网络信息编程、多线程编程、套接字编程、简单网络服务器设计、基于IO模型的网络开发、网络性能工具iperf的使用、WinInet开发浏览器实例、HTTP编程、Web编程、中国象棋网络对弈实例、winpcap编程、ICE网络编程和IPv6网络编程。
本书适合Visual C++网络编程初学者阅读,可供开发人员查阅参考,也适合作为高等院校相关专业的教学参考书。
目录
第1章TCP/IP协议基础 1
1.1什么是TCP/IP 1
1.2TCP/IP协议的分层结构 1
1.3应用层 5
1.3.1DNS 5
1.3.2端口的概念 6
1.4传输层 6
1.4.1TCP协议 7
1.4.2UDP协议 7
1.5网络层 8
1.5.1IP协议 8
1.5.2ARP协议 15
1.5.3RARP协议 16
1.5.4ICMP协议 17
1.6数据链路层 26
1.6.1数据链路层的基本概念 26
1.6.2数据链路层的主要功能 26
1.7一些容易混淆的术语 27
1.7.1MTU 27
1.7.2IP分组的分片问题 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.1gethostname函数 30
2.1.2gethostbyname函数 30
2.1.3inet_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利用Win32API函数进行多线程开发 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.3CRT库中的多线程函数 97
3.4MFC多线程开发 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.3IP地址的转换 129
4.2.4主机字节序和网络字节序 131
4.2.5I/O工作模式和I/O模型 133
第5章TCP套接字编程 134
5.1TCP套接字编程的基本步骤 134
5.2协议簇和地址簇 134
5.3socket地址 136
5.3.1通用socket地址 137
5.3.2专用socket地址 138
5.3.3IP地址的转换 139
5.3.4获取套接字地址 141
5.4TCP套接字编程的相关函数 143
5.4.1WSAStartup函数 143
5.4.2socket/WSASocket函数 143
5.4.3bind函数 145
5.4.4listen函数 147
5.4.5accept/WSAAccept函数 147
5.4.6connect/WSAConnect函数 148
5.4.7send/WSASend函数 148
5.4.8recv/WSARecv函数 148
5.4.9closesocket函数 149
5.4.10inet_addr函数 149
5.4.11inet_ntoa函数 149
5.4.12htonl函数 149
5.4.13htons函数 150
5.4.14WSAAsyncSelect函数 150
5.4.15WSACleanup函数 151
5.5简单的TCP套接字编程 151
5.6深入理解TCP编程 156
5.6.1数据发送和接收涉及的缓冲区 156
5.6.2TCP数据传输的特点 157
5.6.3数据发送的6种情形 157
5.6.4数据接收时碰到的情形 159
5.6.5一次请求响应的数据接收 160
5.6.6多次请求响应的数据接收 165
5.7I/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.1UDP套接字编程的基本步骤 190
6.2UDP套接字编程的相关函数 192
6.2.1sendto/WSASendto函数 192
6.2.2recvfrom/WSARecvfrom函数 192
6.3实战UDP套接字 192
6.4UDP丢包及无序问题 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.1UDP循环服务器 266
9.1.2TCP循环服务器 267
9.2多线程并发服务器 271
9.3I/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.4I/O和网络I/O 276
10.5I/O模式 277
10.5.1阻塞模式 277
10.5.2非阻塞模式 278
10.6I/O模型 278
10.7选择模型 279
10.7.1基本概念 279
10.7.2select函数 280
10.7.3实战select模型 282
10.8异步选择模型WSAAsyncSelect 288
10.8.1基本概念 288
10.8.2WSAAsyncSelect函数 289
10.8.3实战WSAAsyncSelect模型 291
10.9事件选择模型 303
10.9.1基本概念 303
10.9.2WSAEventSelect函数 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.1iperf概述 348
11.2iperf的特点 348
11.3iperf的工作原理 348
11.4iperf的主要功能 350
11.5iperf中Linux下的使用 350
11.5.1在Linux下安装iperf 351
11.5.2iperf的简单使用 352
11.6iperf中Windows下的使用 353
11.6.1命令行版本 353
11.6.2图形化版本 353
第12章WinInet开发Internet客户端 355
12.1什么是WinInet 355
12.2认识WinInetAPI函数 355
12.2.1通用WinInetAPI函数 356
12.2.2WinInetHTTP函数 361
12.2.3WinInetFTP函数 363
12.2.4WinInetGopher函数 364
12.2.5读取HTTP网页数据 364
12.3认识MFCWinInet类库 366
12.3.1访问HTTP服务器的一般流程 367
12.3.2访问FTP服务器的流程 368
12.4FTP开发 369
12.4.1FTP概述 369
12.4.2FTP的工作原理 370
12.4.3FTP的传输方式 371
12.4.4FTP的工作方式 371
12.4.5FTP命令 372
12.4.6FTP应答码 375
12.4.7开发FTP客户端 377
第13章HTTP网络编程 390
13.1HTTP简介 390
13.2HTTP的工作原理 390
13.3HTTP的特点 391
13.4HTTP的消息结构 391
13.5客户端请求消息 392
13.6服务器响应消息 393
13.7HTTP状态码 394
13.8HTTP状态码分类 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.1CGI程序的工作方式 411
14.2架设Web服务器Apache 412
14.3ActiveX、OLE和COM 415
14.4什么是OCX 415
14.5ActiveX 416
14.6ActiveX控件 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.1CCOM类 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.1WinMain函数 455
15.10.2InitInstance函数 456
15.11通信函数解析 457
15.11.1Listen函数 457
15.11.2ListenThread函数 458
15.11.3SendMsg函数 460
15.12象棋业务逻辑重要函数解析 461
15.12.1Graphics函数 461
15.12.2Draw函数 462
15.12.3InitChessBoard函数 463
15.12.4ChessRule函数 464
第16章WinPcap编程 474
16.1什么是WinPcap 474
16.2WinPcap的历史 474
16.3WinPcap的功能 475
16.4WinPcap的应用领域 475
16.5WinPcap不能做什么 476
16.6WinPcap组成结构 476
16.7WinPcap内核层NPF 477
16.8WinPcap的数据结构和主要功能函数 478
16.8.1网络接口的地址 478
16.8.2数据包头的格式 479
16.8.3pcap文件格式 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.1WinPcap通信库的安装 484
16.9.2准备开发包 486
16.9.3第一个WinPcap应用程序 487
16.9.4捕获访问Web站点的网络包 488
第17章ICE网络编程 494
17.1ICE简介 494
17.2ICE的优势 494
17.3ICE的工作原理 495
17.4ICE调用模式 495
17.5客户端与服务器端的结构 496
17.6ICE的下载、安装和配置 496
17.6.1下载ICE 496
17.6.2安装ICE 497
17.6.3安装第三方库 498
17.6.4配置ICE环境变量 499
17.7ICE的使用 500
第18章IPv6网络编程 501
18.1IPv4的现状和不足 501
18.1.1地址空间、地址方案与选路的问题 502
18.1.2网络管理与配置的问题 505
18.1.3服务类型问题 507
18.1.4IP选项的问题 507
18.1.5IPv4安全性问题 508
18.2是增加补丁还是彻底升级改进 508
18.3IPv6的概念 509
18.4IPv6的发展历史 509
18.5IPv6的特点 511
18.6IPv6地址 511
18.6.1IPv6地址表示方法 511
18.6.2IPv6前缀 513
18.6.3IPv6地址的类型 513
18.7IPv6数据报格式 517
18.8基于IPv6的Socket网络编程技术 522
18.8.1地址表示 522
18.8.2IPv6的SocketAPI函数 523
18.8.3IPv6下编写应用程序的注意点 524
18.8.4实战IPv6 524
下载地址