新書推薦:
《
周易
》
售價:HK$
44.6
《
东南亚的传统与发展
》
售價:HK$
67.2
《
乾隆制造
》
售價:HK$
87.4
《
资治通鉴臣光曰辑存 资治通鉴目录(司马光全集)(全二册)
》
售價:HK$
304.4
《
明代社会变迁时期生活质量研究
》
售價:HK$
316.2
《
律令国家与隋唐文明
》
售價:HK$
76.7
《
紫云村(史杰鹏笔下大唐小吏的生死逃亡,新历史主义小说见微之作,附赠5张与小说内容高度契合的宣纸彩插)
》
售價:HK$
98.6
《
现代吴语的研究(中华现代学术名著3)
》
售價:HK$
65.0
編輯推薦:
Visual C 2017在Windows应用程序开发工具中占有重要的地位,而网络编程又是VC一线开发中的重中之重。本书针对Visual C 2017中的网络开发理论和开发技巧,从基本的内容讲起,尽量使用简单易懂的语言表达,并配合相应的实例,以加深读者的理解。对于其中的技术细节,都尽量讲深讲透,为读者提供翔实可靠的技术资料。
內容簡介:
本书从初学者的角度出发,以通俗易懂的语言,配合丰富多彩的实例,详细地介绍了使用Visual C++ 2017进行网络编程应该掌握的各方面知识,以及网络编程的常见场景和较难技术,快速提高开发技能。 全书共分18章,内容包括TCPIP协议、本机网络信息编程、多线程编程、套接字编程、简单网络服务器设计、基于IO模型的网络开发、网络性能工具iperf的使用、WinInet开发浏览器实例、HTTP编程、Web编程、中国象棋网络对弈实例、winpcap编程、ICE网络编程和IPv6网络编程。 本书适合Visual C++网络编程初学者阅读,可供开发人员查阅参考,也适合作为高等院校相关专业的教学参考书。
關於作者:
朱晨冰,计算机应用专业硕士,10多年C\C 开发经验。精通Linux、Windows系统开发及数据库开发技术。
目錄 :
目 录 第1章 TCPIP协议基础 1 1.1 什么是TCPIP 1 1.2 TCPIP协议的分层结构 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 IO工作模式和IO模型 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 socketWSASocket函数 143 5.4.3 bind函数 145 5.4.4 listen函数 147 5.4.5 accept WSAAccept函数 147 5.4.6 connectWSAConnect函数 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 IO控制命令 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 sendtoWSASendto函数 192 6.2.2 recvfromWSARecvfrom函数 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 IO复用服务器 272 第10章 基于IO模型的网络开发 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 IO和网络IO 276 10.5 IO模式 277 10.5.1 阻塞模式 277 10.5.2 非阻塞模式 278 10.6 IO模型 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 重叠IO模型 309 10.10.1 基本概念 309 10.10.2 创建重叠IO模型下的套接字 312 10.10.3 获取重叠IO操作完成结果 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
內容試閱 :
前 言
Visual C2017(简称VC 2017)在Windows应用程序开发工具中占有重要的地位,也是业界进行VC开发的主流版本工具,而网络编程又是VC一线开发中的重中之重。针对当前介绍使用VC2017进行网络开发的书籍不是很多、也不够全面等特点,本书作者决定撰写一本面对初中级读者的VC2017网络开发方面的书。作者在平时工作中经常使用许多VC系列开发工具,积累了不少技术心得和开发经验,知道初学者或刚刚踏上工作岗位的同仁难点在哪里,将所涉及的技巧和方法讲述出来。如果本书能对大家有所帮助,这将是一件很荣幸的事。作者所做的一切工作均来源于长期的实践。对于VC2017中的网络开发理论和开发技巧,都从基本的内容讲起,然后稍微提高(循序渐进是本书一大原则)。软件开发是一门需要实践的技术,本书理论尽量用简单易懂的语言表达,并配合以相应的实例,避免空洞的说教,对于其中的技术细节,都尽量讲深讲透,为读者提供翔实可靠的技术资料。
另外,本书假定读者有CC的基础和VC2017基本编程能力,关于VC2017的基础开发知识,可以参考作者的《Visual C 2017从入门到精通》。
代码下载与支持邮箱
本书代码下载地址可扫描右边二维码获得。
如果下载有问题,请联系booksaga@163.com,邮件主题为Visual C 2017网络编程实战。
本书作者
除了封面署名人员外,李建英老师也参与了本书的创作,在此表示感谢。虽然作者尽了最大努力,但是本书难免会存在瑕疵,希望读者朋友不吝赐教。
作 者
2019年10月