Winsock,即基于Windows的套接字,是专门为网络开发人员开发网络应用程序设计的编程接口。由于现今网络应用的普及,使之成为了IT发展的重要分支之一。本书的出版正是顺应了这种需求。本书简洁而专业地介绍了Winsock的基本概念和操作方式,指导程序员如何利用现有的主流开发工具进行最流行的Windows网络应用的开发。同时,本书的内容覆盖了程序员所要了解的多个方面:从网络基本知识、Socket的介绍到基本网络编程技术,并在本书的末尾介绍了几种Winsock 2的网络编程方法,且着重对MFC的网络编程方法和现今网络编程中的一些技术难点进行了深入而透彻的分析。另外,本书附带的光盘中收录了书中列举的所有实例程序代码,因此极大地方便了读者的学习和使用。
本书内容翔实、实例丰富,不仅适合于有志于使用Winsock 2.0进行网络开发的读者,而且可作为各类高等院校计算机专业在校学生的教学参考用书。
第一部分 基础篇
第1章 计算机网络基础
1.1 计算机网络概述
1.1.1 计算机网络的定义
1.1.2 计算机网络的分类
1.1.3 计算机网络体系结构
1.2 Internet基础
1.2.1 Internet的发展
1.2.2 Internet的特点
1.2.3 Internet的功能
1.2.4 Internet的连接方式
1.3 网络模型
1.3.1 OSI参考模型
1.3.2 TCP/IP参考模型
1.3.3 NetBEUI参考模型
1.3.4 IPX/SPX参考模型
1.4 数据通信服务实例
1.4.1 X.25标准访问协议
1.4.2 帧中继技术
1.4.3 SMDS
1.4.4 ISDN和ATM
1.5 本章小结
1.6 习题
第2章 Windows套接字
2.1 Socket及其来源
2.2 套接字的类型
2.2.1 流式套接字
2.2.2 数据报套接字
2.3 套接字规范
2.3.1 Berkeley套接字规范
2.3.2 Windows套接字规范
2.3.3 Windows套接字和Berkeley套接字的比较
2.4 现有的几种Windows套接字规范
2.4.1 Winsock 1.0
2.4.2 Winsock 1.1
2.4.3 Winsock 2.0
2.5 Windows Socket编程的一般模式
2.5.1 客户机/服务器编程模型
2.5.2 几个基本概念
2.6 基本操作函数
2.6.1 Winsock的启动和终止
2.6.2 Winsock的创建及绑定和关闭
2.6.3 建立通信连接listen及accept和connect
2.6.4 数据的传输
2.6.5 套接口属性选项
2.6.6 数据库文件
2.6.7 原始套接口
2.7 Winsock 2的新特性
2.7.1 对多协议的支持
2.7.2 对I/O与事件对象的重叠支持
2.7.3 套接口组
2.7.4 服务质量(QoS)
2.8 Winsock 2新增函数一览
2.9 一个简单的客户机朋艮务器的实现
2.9.1 服务器端的实现
2.9.2 客户端的实现
2.9.3 实例分析
2.10 本章小结
2.11 习题
第3章 微软VB Winsock控件
3.1 Winsock控件的基本操作
3.1.1 Winsock控件的数据传输
3.1.2 Winsock控件的基本属性
3.1.3 Winsock控件的基本方法
3.1.4 Winsock控件的基本事件
3.2 电子邮件系统基本原理
3.2.1 邮件传输原理
3.2.2 电子邮件的地址
3.2.3 常用的几种电子邮件协议
3.3 用VB实现邮件系统
3.3.1 邮件系统服务器端的实现
3.3.2 邮件系统客户端的实现
3.3.3 实例分析
3.4 本章小结
3.5 习题
第4章 MFC的网络应用程序的开发
4.1 MFC Socket类的原理与使用
4.1.1 CasyncSocket类
4.1.2 CSocket类
4.2 MFC编程实例--聊天系统
4.2.1 客户端的实现
4.2.2 服务器端的实现
4.2.3 实例分析
4.3 本章小结
4.4 习题
第二部分 应用篇
第5章 断点续传与数据通信
5.1 基本概念
5.1.1 多线程数据传输原理
5.1.2 断点续传的基本原理
5.2 断点续传与数据通信实例
5.2.1 服务器端的实现
5.2.2 客户端的实现
5.2.3 实例分析
5.3 本章小结
5.4 习题
第6章 网络远程监控程序的开发
6.1 远程监控的原理
6.2 几个基本概念
6.3 一个简单的远程屏幕监控程序的实现
6.3.1 服务器端的实现
6.3.2 客户端的实现
6.3.3 实例分析
6.4 本章小结
6.5 习题
第7章 网络多播
7.1 多播通信
7.1.1 多播通信原理
7.1.2 IP多播与IGMP
7.2 多播与Winsock
7.2.1 Winsock 1多播的实现
7.2.2 Winsock 2多播的实现
7.3 网络多播实例
7.3.1 程序的实现
7.3.2 实例分析
7.4 本章小结
7.5 习题
第8章 原始套接字应用程序的开发
8.1 基本概念
8.1.1 原始套接字的创建
8.1.2 几个基本的协议
8.2 用原始套接字实现Ping程序
8.3 用原始套接字来开发IP协议解析器
8.3.1 程序的组织
8.3.2 实例分析
8.4 本章小结
8.5 习题
第三部分 提高篇
第9章 Winsock 2完成端口的开发
9.1 Winsock完成端口模型
9.1.1 完成端口的基本概念
9.1.2 使用完成端口进行应用程序开发的基本步骤
9.2 用完成端口开发服务器应用程序
9.2.1 程序的组织
9.2.2 实例分析
9.3 本章小结
9.4 习题
第10章 常规服务质量
10.1 背景知识
10.1.1 QoS的基本概念
10.1.2 QoS的四大重要组件
10.2 用Winsock 2对QoS进行访问
10.2.1 WSAConnect
10.2.2 WSAAccept
10.2.3 WSAJoinLeaf
10.2.4 WSAIoctl
10.3 QoS网络编程实例
10.3.1 实现过程
10.3.2 实例分析
10.4 本章小结
10.5 习题
附录A Windows Socket错误代码
附录B Windows Socket 1.x库函数及其扩展
附录C Windows Socket 2扩展库函数简要参考
习题参考答案
计算机网络是计算机技术和通信技术密切结合的产物。随着信息时代的到来,它正成为迅速发展并在信息社会中得到广泛应用的一门综合性学科,是计算机发展的重要方向之一。
熟练掌握网络编程方法并时刻把握最新前沿动态已是当今程序员们的共识。面对市场上层出不穷的网络编程书籍,读者往往会发出这样的感慨:现今介绍编程的书籍不少,但要想找到一本具有实际指导意义的很实用的书却很难。这些书往往只是对某一种编程工具进行一般性介绍,或只是阐述一些精深的理论,或者只有一些简单的实例,但却没有对读者最为关心的技术细节进行深入的讨论。本书正是应广大读者的要求,对Socket 2这个最新。最流行的网络编程接口进行了详细的介绍,它不仅是网络编程人员从Winsoek1向Winsock2过渡时的"领航员",也是入门者向顶级网络编程人员迈进的“磨刀石”。由于本书后面章节中介绍了相关的高级编程技术,所以它更是网络编程人员提升自己等级的“试金石”。
本书的最大特色是各章都介绍了与实例紧密结合的丰富理论知识。这些理论涉及到网络、协议、各种网络应用程序开发原理等诸多方面。掌握这些理论知识,无疑对理解实例和开发应用程序都具有极大的帮助。
主要内容
全书共分三部分:
第一部分 基础篇,包括第1-4章,简要介绍了网络发展现状,网络的相关理论知识,Winsock套接字的基本概念以及规范,Socket网络编程的基本操作方法和Winsock 2的一些新特性,Winsock控件及如何在其上进行基本的应用程序开发,Microsoft Visual C++提供的MFC中的网络开发接口等相关知识。
第二部分 应用篇,包括第5~8章,重点介绍了在网络不稳定的情况下如何采用断点续传技术进行网络应用程序的开发,网络远程监控应用程序的开发,在同时与多个主机进行通信时,进行网络开发的基本方法(网络多播),原始套接字的基本概念以及如何利用它绕过传输层来开发底层的网络应用等相关知识。
第三部分 提高篇,包括第9~10章,重点介绍了完成端口的基本概念以及如何利用它来开发大响应规模的应用程序,常规服务质量以及其网络应用等相关知识。
此外,在本书的最后附上了4个附录,分别收录了Winsock的基本错误代码,Winsock 1和Winsock 2的基本函数,并对所收录的函数作了简单的解释和说明,以及各章的习题参考答案。
本书特点
笔者希望通过对各方面。各种类型实例从易到难、由浅入深地讲解,使读者能较轻松地掌握用Winsock 2进行应用程序开发的技能,并可根据需要开发出其他实用的应用程序。因此,在本书编排上,主要采用了“理论+实例”的模式。即在每章的开始部分,介绍了开发此应用程序所需的相关知识,主要包括网络知识和套接字在该类程序中的应用,为接下来的实例开发打下基础,在实例部分,每个实例都提供了程序目标要点、实际设计步骤、程序源代码、实例解析等内容,使读者能通过对实例的理解进一步掌握相关理论,从而提高网络应用程序的开发能力。
本书各章之间既有一定的联系又相对独立,便于读者根据需要进行选择阅读。
本书由众多具有丰富编程经验的人员编写。本书内容翔实、实例丰富,不仅适合于迫切需要使用Winsock2进行网络开发的读者使用,而且可作为各类高等院校计算机专业在校学生的教学参考用书。
本书附送的光盘中收录了本书所有示例的源程序,这些源程序分别位于光盘中各章所对应的目录下。在使用本配套光盘时,可直接将相关章节的目录下所对应的源文件复制到硬盘上,然后使用VC或VB打开,即可浏览各个示例的源程序。
首先要谢谢我的合作者,博嘉科技资讯有限公司的王松老师,对他在综合本书的材料和写作中的整体管理工作表示感谢。同时还要感谢三位老师,他们阅读了本书的最新手稿并提出了很有价值的意见,从而使本书的内容对程序员以及在校学生更有意义,他们是:电子科技大学计算机学院的白钟建老师。李毅超老师以及副院长刘乃奇教授。我也要对清华大学出版社的各位老师表示感谢,是他们看到了本书的价值,使本书得以出版。
本书由李凌担任主要的编写工作。参与本书编排的人员还有:王安贵、陈郭宜、程小英、谭小丽、卢丽娟、刘育志、吴淬砺、赵明星、贺洪俊、李小平、史利、张燕秋、周林英、黄茂英、李立、李小琼、李修华、田茂敏、苏萍、巫文斌、邹勤、粟德容、童芳、李中全等,在此对他们表示感谢。
由于编写时间仓促,书中疏漏之处在所难免,欢迎广大读者和同行批评指正。
延伸服务:如果读者愿意参加《Winsoek2网络编程实用教程》的学习培训,或是在学习过程中发现问题,或有更好的建议,欢迎致函。同时,我们也非常愿意随时同Winsock 2网络编程高手保持经常的联系,E-mail:bojiakeji@163.net。我们将认真、负责地对待每位读者的来信。