热门关键字:  听力密码  听力密码  新概念美语  单词密码  巧用听写练听力

Windows网络程序设计完全讲义

中国水利水电出版社
    【作 者】高守传 周书锋 【I S B N 】978-7-5084-7429-8 【责任编辑】张玉玲 【适用读者群】科技 【出版时间】2010-05-19 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】 【千字数】665 【印 张】25 【定 价】48 【丛 书】暂无分类 【备注信息】
图书详情

    网络程序设计是当前各种程序设计中最活跃的一个分支,几乎渗透到各种应用场合。在Windows网络程序设计中,基于套接字的编程方式又是一种比较常见而且最为灵活的网络应用程序设计方法。本书从简单的网络通信协议入手,介绍了Windows中常见网络程序的设计方法,主要包括TCP/IP协议、网络服务、MFC网络编程、WinInet、ISAPI、Internet、HTTP协议、SMTP/POP3协议、代理协议、原始套接字等。此外,还对通用的数据包捕获驱动WinPcap进行简要介绍,并给出了捕获示例,最后结合现实需要对远程控制的相关技术进行说明,并给出了实现的例子。

    全书内容丰富,讲解细腻,在对理论进行阐述的同时,结合具体实践给出了相应的实现代码,具有较强的针对性,力求使读者通过理论联系实际,掌握Windows网络程序设计的一般方法,学习尽可能多的知识。同时,对于开发中可能会遇到的问题也都给出了相应的提示或说明。

    本书定位于初、中级读者,同时也可用作高等院校计算机及通信专业低年级学生的参考教材。

    (1)以RFC网络协议为基础,以TCP/IP协议为主线。避免了一般同类书籍脱离RFC且无侧重讨论的问题。

    (2)紧密结合学习实践需要,精选多个典型实例。以实用和兴趣为引导,避免枯燥且脱离实际的学习,进而提高了学习效率。

    (3)以解决实际问题为原则,代码紧凑而不冗余,而且在关键处还配有大量的代码注释。以最小的篇幅和最简单的代码将复杂问题简单化,利于读者消化和吸收。

    (4)对于部分难点、疑点,编者还在书中以“说明”或“注释”的形式向读者提供有关背景,这样便于读者对正文的理解。

    (5)全书编配了大量的插图用以解释“流程”、“结构”、“框架”等抽象概念,以辅助读者对相关概念从抽象到具体的转化,从而实现准确地理解。

    随着计算机网络尤其是Internet的迅猛发展,人类社会已经进入了以网络技术为基础的信息化时代,网络应用渗透到生活的各个领域,即使在我们这样的发展中国家,普及程度也相当可观。2009年7月16日,中国互联网络信息中心(CNNIC)发布的统计报告显示,截至2009年6月30日,我国网民规模已达3.38亿,居世界第一位。网络的普及大大改变了人们的传统习惯,拓展了新的媒体形式。但是,真正提供服务的却是构建在其上的各种类型的网络应用软件,通过这些软件提供的服务,人们可以进行网上购物、收发电子邮件、实现家庭办公、进行视频点播及远程教育等。

    TCP/IP协议是Internet的核心,在制定TCP/IP协议的目标时就已指出,任何人都能方便地使用Internet,并在其上开发出满足不同需要的应用程序。本书即是参照TCP/IP协议的这一要求,并围绕TCP/IP协议,在Windows环境中实现网络程序的设计。

    本书的主要内容如下:

    第1章作为本书的开篇,也是TCP/IP协议的基础,介绍了常见的网络模型,同时还介绍了寻址方法与数据包在网络中的传递过程。

    第2章详细介绍Windows中套接字的相关知识,主要包括套接字规范、Winsock编程基础、连接与无连接通信知识、套接字选项与I/O控制等,最后分别给出连接与无连接通信的例子来加深读者对二者的理解。

    第3章介绍Windows套接字的5种I/O操作模型,即select模型(又称选择模型)、WSAAsyncSelect模型(又称异步选择模型)、WSAEventSelect模型(又称事件选择模型)、重叠I/O模型和完成端口模型,同时分别给出它们的具体实现,最后对各个模型进行了简单比较,以便帮助读者选择合适的编程模型。

    第4章介绍Windows网络服务的编程方法,因为大多数网络服务是以系统服务的方式提供,所以有必要通过本章来学习Windows服务程序的设计方法。

    第5章介绍MFC中提供的套接字类,并对如何通过它们进行网络编程进行详细介绍,结尾给出了一个使用它们进行网络聊天室开发的实例。

    第6章介绍WinInet、ISAPI与Internet编程的具体细节,这些标准简化了C/S模式的Internet编程方法。

    第7~9章介绍TCP/IP协议族中的应用层协议,主要包括HTTP协议、SMTP协议、POP3协议、SOCKS5代理协议等。作为网络应用程序的设计人员,在理解TCP/IP协议工作原理的基础上,应用层协议应是关注的重点,这也是本书以此3章来介绍应用层协议的目的所在。

    第10章介绍原始套接字的相关知识,包括Windows对原始套接字的支持情况、如何使用原始套接字等,最后给出两个例子分别实现了不同的用途,其中包括在ICMP协议中的应用和数据捕获方面的应用。

    第11章介绍WinPcap的相关知识,作为Windows环境中经典的数据包捕获驱动库,WinPcap的应用非常广泛,最后给出WinPcap在数据捕获方面的应用实例。

    第12章介绍远程控制的相关知识,包括连接方式、隐藏技术、启动方式、文件捆绑、键盘记录等,最后给出一个简单的控制实例,读者可以应用本章介绍的知识对此实例进行扩展,以实现一个具有较强功能的远程控制软件。

    本书定位于初、中级读者,也可用作高等院校计算机及通信专业低年级学生的参考教材。在编写时,力求做到浅显易懂,并配有大量插图帮助读者理解,在程序设计实例中注释也比较详细,以便读者自学。网络程序设计是一门实践性较强的课程,对读者来说,只有在理解相关理论的基础上进行大量的动手实践,才能学好网络程序设计,因此,建议读者在学习过程中一定要边学习边实践,以达到学习效率的最大化。

    除署名作者外,参加编写的人员还有陶志杰、蒋海东、贺文思、刘挺、李洪峻、姚晓玉等。由于时间仓促,加之作者水平有限,书中难免会有不足之处,真诚欢迎各位读者予以批评指正,联系邮箱winsock2010@sohu.com。

    编 者

    2010年1月

    前言

    第1章 网络模型 1
    1.1 功能分层 1
    1.2 OSI模型 2
    1.2.1 OSI层次结构 2
    1.2.2 OSI各层功能 3
    1.2.3 OSI层间通信 5
    1.2.4 OSI数据封装及解封装 6
    1.3 TCP/IP协议簇 8
    1.3.1 TCP/IP层次结构 8
    1.3.2 TCP/IP各层功能 9
    1.3.3 TCP/IP与OSI模型比较 10
    1.3.4 Internet层——IP协议 11
    1.3.5 传输层——TCP协议 12
    1.3.6 TCP连接的建立与终止 13
    1.3.7 传输层——UDP协议 17
    1.3.8 Windows 2003 TCP/IP结构模型 18
    1.4 LAN模型 20
    1.4.1 IEEE 802概述 20
    1.4.2 以太网标准 21
    1.5 寻址方法 23
    1.6 数据包在网络中的传递 24
    1.7 本章小结 26
    第2章 Windows套接字基础 27
    2.1 套接字简介 27
    2.1.1 Berkeley套接字 27
    2.1.2 Windows套接字规范 28
    2.2 Windows Sockets 28
    2.2.1 Windows Sockets 1.0 28
    2.2.2 Windows Sockets 1.1 28
    2.3 Windows Sockets 2 29
    2.3.1 Windows Sockets 2简介 29
    2.3.2 同时访问多个传输协议 30
    2.3.3 与WinSock 1.1的兼容性 31
    2.3.4 功能扩展机制 32
    2.3.5 多线程中的应用 32
    2.3.6 分散/聚集I/O支持 33
    2.4 WinSock编程基础 33
    2.4.1 WinSock API 33
    2.4.2 网络程序结构 36
    2.4.3 端口的概念 37
    2.4.4 字节顺序 37
    2.4.5 出错的处理 39
    2.4.6 WinSock库的初始化及释放 40
    2.5 面向连接的通信 42
    2.5.1 socket与WSASocket 42
    2.5.2 绑定套接字bind 44
    2.5.3 监听listen 46
    2.5.4 accept与WSAAccept 47
    2.5.5 send与WSASend 48
    2.5.6 recv与WSARecv 50
    2.5.7 connect与WSAConnect 52
    2.5.8 closesocket 53
    2.6 无连接通信 54
    2.6.1 sendto与WSASendto 55
    2.6.2 recvfrom与WSARecvfrom 56
    2.7 套接字选项与I/O控制 58
    2.7.1 套接字选项 58
    2.7.2 套接字I/O控制 61
    2.8 套接字工作模式 63
    2.9 流式套接字编程实例 64
    2.9.1 TCP服务端设计 64
    2.9.2 TCP客户端设计 66
    2.10 数据报套接字编程实例 68
    2.10.1 UDP服务端设计 68
    2.10.2 UDP客户端设计 70
    2.11 本章小结 72
    第3章 Windows Socket I/O模型 73
    3.1 select模型 73
    3.1.1 select函数 73
    3.1.2 select模型应用 76
    3.2 WSAAsyncSelect模型 82
    3.2.1 WSAAsyncSelect函数 83
    3.2.2 异步选择模型应用 85
    3.3 WSAEventSelect模型 90
    3.3.1 WSAEventSelect函数 91
    3.3.2 事件选择模型辅助API 91
    3.3.3 事件选择模型应用 94
    3.4 重叠I/O模型 98
    3.4.1 重叠套接字I/O概述 98
    3.4.2 完成例程 100
    3.4.3 完成例程应用 102
    3.4.4 基于事件的通知 106
    3.4.5 事件对象应用 107
    3.5 完成端口模型 110
    3.5.1 完成端口简介 111
    3.5.2 完成端口模型API 111
    3.5.3 完成端口应用 113
    3.6 模型比较 116
    3.7 本章小结 116
    第4章 网络服务 117
    4.1 服务程序 117
    4.1.1 程序入口 117
    4.1.2 服务主函数 118
    4.1.3 服务控制处理器函数 119
    4.1.4 更新服务状态及相关结构 119
    4.2 服务配置 120
    4.2.1 服务的安装 121
    4.2.2 服务的卸载 122
    4.3 服务控制 122
    4.3.1 服务的启动 122
    4.3.2 服务控制请求 123
    4.4 网络服务实例 124
    4.4.1 主函数main 124
    4.4.2 服务主函数ServiceMain 126
    4.4.3 控制处理器函数ServiceCtrlHandler 127
    4.4.4 服务配置实现 127
    4.4.5 服务控制实现 130
    4.5 本章小结 133
    第5章 MFC套接字网络编程 134
    5.1 MFC基础与网络类库 134
    5.1.1 MFC基础 134
    5.1.2 MFC中的网络开发相关类 134
    5.2 CAsyncSocket类及其开发 137
    5.2.1 CAsyncSocket类 137
    5.2.2 CAsyncSocket类的编程模式 138
    5.2.3 CAsyncSocket类的异步机制 141
    5.2.4 使用CAsyncSocket类实现信息
    转发器(服务端) 142
    5.2.5 使用CAsyncSocket类实现信息
    转发器(客户端) 145
    5.3 CSocket类及其开发 147
    5.3.1 CSocket类 147
    5.3.2 CSocket类的编程模式 148
    5.3.3 CSocket类的同步(阻塞)机制 149
    5.3.4 使用CSocket类的阻塞模式
    进行通信 151
    5.4 网络聊天室开发实例 154
    5.4.1 服务器端程序的开发 154
    5.4.2 客户端程序的开发 157
    5.5 本章小结 159
    第6章 WinInet、ISAPI与Internet编程 160
    6.1 WinInet基础 160
    6.1.1 WinInet API函数 160
    6.1.2 WinInet API函数的使用 162
    6.1.3 MFC WinInet类库概述 165
    6.1.4 MFC WinInet类库的使用 166
    6.2 使用MFC WinInet开发网络应用 168
    6.2.1 WinInet开发客户端程序的流程 168
    6.2.2 WinInet开发查询Web网站程序 170
    6.3 利用ISAPI扩展开发CGI程序 171
    6.3.1 CGI基础 171
    6.3.2 CGI应用实例 172
    6.3.3 ISAPI基础 174
    6.3.4 使用MFC开发ISA程序的
    基本方法 174
    6.3.5 使用MFC开发ISA程序实例 177
    6.4 本章小结 180
    第7章 HTTP协议 181
    7.1 资源标识 181
    7.1.1 统一资源标识符 181
    7.1.2 HTTP统一资源定位符 183
    7.2 HTTP协议 184
    7.2.1 协议版本 185
    7.2.2 协议参数 186
    7.2.3 HTTP消息 187
    7.2.4 HTTP实体 190
    7.2.5 HTTP连接 190
    7.3 HTTP服务器实例 191
    7.3.1 主函数 191
    7.3.2 初始化及等待连接 192
    7.3.3 服务线程 196
    7.3.4 解析请求 200
    7.4 本章小结 204
    第8章 邮件传输 205
    8.1 电子邮件简介 205
    8.2 电子邮件的格式 206
    8.2.1 RFC 822电子邮件格式 207
    8.2.2 MIME电子邮件格式 211
    8.3 SMTP协议 215
    8.3.1 SMTP通信模型 215
    8.3.2 SMTP命令 216
    8.3.3 SMTP响应 219
    8.3.4 使用SMTP发送邮件的步骤 220
    8.4 SMTP服务扩展 221
    8.4.1 EHLO命令 221
    8.4.2 AUTH命令 222
    8.5 电子邮件的认证 222
    8.5.1 AUTH LOGIN机制 223
    8.5.2 AUTH PLAIN机制 223
    8.5.3 CRAM-MD5机制 224
    8.6 发送邮件实例 225
    8.6.1 主函数实现 225
    8.6.2 获取服务端响应 228
    8.6.3 认证实现 228
    8.6.4 Base64编解码 229
    8.6.5 邮件发送 232
    8.7 POP3协议 236
    8.7.1 POP3命令 236
    8.7.2 POP3状态 240
    8.7.3 使用POP3操作邮箱的步骤 240
    8.8 接收邮件实例 240
    8.8.1 主函数实现 241
    8.8.2 获取服务端响应 243
    8.8.3 获取邮件/邮箱属性信息 243
    8.8.4 读取邮件 245
    8.8.5 删除邮件 246
    8.9 本章小结 247
    第9章 代理服务器 248
    9.1 代理服务器简介 248
    9.1.1 代理服务器功能 248
    9.1.2 代理服务器分类 251
    9.2 HTTP代理 252
    9.3 HTTP代理服务器实例 253
    9.3.1 主函数main 253
    9.3.2 代理线程 254
    9.3.3 转发请求与响应 255
    9.3.4 TCP数据交换 259
    9.4 SOCKS5协议 263
    9.4.1 SOCKS5 TCP代理 263
    9.4.2 SOCKS5 UDP代理 265
    9.4.3 SOCKS5对认证的支持 266
    9.5 SOCKS5代理实例 266
    9.5.1 主函数main 267
    9.5.2 认证实现 268
    9.5.3 代理线程 270
    9.5.4 代理模式检测 273
    9.5.5 获取地址、端口及UDP数据 274
    9.5.6 创建UDP套接字 275
    9.5.7 UDP代理线程 276
    9.6 本章小结 279
    第10章 原始套接字 280
    10.1 原始套接字简介 280
    10.1.1 原始套接字简史 280
    10.1.2 原始套接字与网络安全 281
    10.2 Windows与原始套接字 282
    10.2.1 原始套接字支持 283
    10.2.2 数据发送 284
    10.2.3 数据接收 284
    10.3 如何使用原始套接字 285
    10.3.1 创建原始套接字 285
    10.3.2 原始套接字的协议参数 286
    10.3.3 头包含选项 287
    10.3.4 发送原始数据包示例 287
    10.4 ICMP协议 290
    10.4.1 ICMP协议简介 291
    10.4.2 校验和计算 293
    10.4.3 Ping程序实现 294
    10.4.4 Tracert实现 297
    10.5 数据包捕获 297
    10.5.1 数据包捕获流程 298
    10.5.2 数据包捕获实现 298
    10.6 本章小结 300
    第11章 WinPcap应用 301
    11.1 WinPcap基础 301
    11.1.1 WinPcap结构 301
    11.1.2 NPF的主要功能及其结构 303
    11.1.3 WinPcap工作框架 305
    11.2 WinPcap编程接口 306
    11.2.1 UNIX兼容API 306
    11.2.2 WinPcap扩展API 311
    11.3 WinPcap嗅探实例 313
    11.3.1 主函数 314
    11.3.2 回调函数 317
    11.3.3 协议头部 317
    11.3.4 数据包处理 319
    11.4 本章小结 320
    第12章 远程控制技术 321
    12.1 远程控制的概念 321
    12.2 连接方式 322
    12.2.1 直接指定 322
    12.2.2 通过第三方获取 322
    12.3 线程插入 324
    12.3.1 远程插入DLL 324
    12.3.2 插入DLL实例 326
    12.3.3 远程插入功能代码 329
    12.3.4 插入代码实例 329
    12.4 启动方式 333
    12.4.1 注册表键 333
    12.4.2 自动运行文件 334
    12.4.3 Windows服务 335
    12.4.4 注册为服务 337
    12.4.5 文件关联 337
    12.4.6 其他方式 339
    12.5 被控端配置 340
    12.5.1 附加信息 340
    12.5.2 预留配置 343
    12.6 信息隐藏 348
    12.6.1 文件隐藏 348
    12.6.2 进程隐藏 349
    12.7 捆绑文件 350
    12.7.1 捆绑原理 350
    12.7.2 Win32图标 352
    12.7.3 图标选择 355
    12.7.4 图标操作 356
    12.7.5 更新资源 359
    12.7.6 捆绑实例 361
    12.8 键盘记录 367
    12.8.1 Win32挂钩简介 367
    12.8.2 挂钩相关的API 368
    12.8.3 全局挂钩 369
    12.8.4 实例介绍 370
    12.9 远程控制开发 373
    12.9.1 管道技术 374
    12.9.2 被控端开发 376
    12.9.3 主控端开发 379
    12.10 本章小结 381
    附录A IP协议号 382
    附录B 以太网类型字段 386
    附录C 常见端口 388
    附录D ASCII表 390
    参考文献 392
最新评论共有 1 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册