首页>参考读物>计算机科学与技术>综合

Windows Sockets网络编程
作者 : (美)Bob Quinn Dave Shute 著
译者 : 徐磊 腾婧 张莹 何慧 译
出版日期 : 2012-08-20
ISBN : 978-7-111-39274-3
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 440
开本 : 16
原书名 : Windows Sockets Network Programming
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书对Windows Sockets的概念、网络应用程序的工作机制、网络操作的3种工作模式以及TCP和UDP 客户与服务器的工作流程等都有很生动详细的讲解。重点介绍适用于任何WinSock实现的应用程序设计,强调不同WinSock DLL的之间的差异,以及网络应用程序开发中的其他陷阱和隐患,展示了避免这些问题的方法。

图书特色

WinSock是一套标准的网络API,是Windows网络程序员可利用的优质资源,通过本书的阅读,能够使开发者充分挖掘WinSock的全部优势,并可为使用其他网络协议体系进行WinSock应用开发工作奠定基础。
本书具有工作原理突出、实例丰富的特点,内容覆盖了从概念、原理、操作模式到实用编程的各个方面:

全面介绍如何开发16位和32位环境下的WinSock应用程序;
讲解socket网络编程所需服务和协议,着重介绍TCP/IP协议;
结合代码、示例生动讲解WinSock的三种操作模式及socket通信原理;
以WinSock编程接口为依托,解析所有网络应用程序的框架;
特别关注WinSock实现程序设计的兼容性,强调不同WinSock DLL之间的差异;
覆盖WinSock规范1.1版本中的所有函数,并详细介绍了WinSock 2.0的所有新特性;
详解BSD Sockets源代码移植,以及WinSock的可选特性;
分析网络应用程序开发中的其他陷阱和隐患,以及避免这些问题的方法;
从应用开发的角度,对程序的调试和相关注意事项给出了详细的分析和建议;
点睛如何创建运行于WinSock DLL上的动态链接库;
提供详尽的参考示例,例如客户端和服务器程序示例,以及完整的网络服务程序示例等。

网络编程领域经典之作,WinSock工作组主席全力推荐,国内众多读者翘首以盼。虽然网络编程技术已经取得迅猛发展,但是所用原理、机制和命令仍大致相同。难能可贵的是,本书中的每一个知识点都力求做到把实现原理讲清楚,把工作机制说明白,尽量深入,竭力避免泛泛而谈,而且结合大量示例,更形象、实用,并从程序员角度出发,给出了大量专家建议。同时,我们也希望读者能用心潜读,在此基础上继续前行,以开展更加深入和广泛的研究。

作者简介
Bob Quinn WinSock 2.0规范解释小组的负责人,Windows Sockets技术的开拓者之一,曾为WinSock规范1.1版本做出重要贡献,从事TCP/IP网络开发多年,经验颇丰。
Dave Shute Windows Sockets技术的先驱者和布道者,WinSock问世之初便与Bob一起服务于著名的 FTP软件公司,对WinSock技术和TCP/IP等网络技术都有非常透彻的研究,实践经验极为丰富。

图书前言

本书讲述Windows Sockets应用编程接口(API),即通常所说的“WinSock”,其定位是作为Windows Sockets规范1.1版本的指南而非代替它。书中内容提供了该规范的路线图和学习资料,自顶向下地阐述了Windows Sockets规范的每个部分,讨论了可选功能以及Windows Sockets规范2.0版本的许多功能。
  书中内容侧重为读者提供指南,帮助他们了解如何编写平台可支持的和可扩展的网络应用程序,使其有效地运行于所有Windows Sockets的实现上。有一种令人沮丧的说法是:“除了最基本的‘hello world’,要想编写能够在所有WinSock实现上运行的任何程序都是不可能的。”这种说法肯定是不对的。如果一个应用能在一种WinSock上运行,而不能在另一种WinSock上运行,那么十有八九是由于开发人员做了某种不正确的假定。他们想当然地认为WinSock能够做某种事情,但是并没有确切的规范依据。也就是说,这种应用程序的失败既不是WinSock实现方面的过错,也不是WinSock规范的过错,它是可以避免的,我们就来告诉你应该怎么做。
  此书适用于所有希望成功掌握WinSock应用编程的人。如果你正在做这些事情:从零开始编程,打算从BSD Sockets(或任何其他网络API)移植程序,编写网络动态链接库(DLL),或者只是打算升级别人编写的应用程序,那么这本书就是为你而写的。我们既论述16位Windows平台(Windows 3.1、Windows for Workgroup),也覆盖32位Windows平台(Windows NT 3.1、Windows NT 3.5、Windows 95)。我们还介绍其他支持WinSock API的平台:那些与Windows相关并打算增补Sockets的平台。
内容安排
  书的前半部分(第1~6章)包含网络编程的介绍,因此不要求读者具有一定的基础。后半部分通过详细的讲解和代码实例展示更深入的内容。附录部分可供读者快速查阅。
  第1章概括地介绍了Windows Sockets。第2章给出了网络软件架构概览。第3章介绍TCP/IP协议簇中的协议,侧重于你的网络应用程序可以使用的服务,以及这些服务的优缺点。第4章开始详细介绍WinSock编程接口,从基本网络功能调用的角度解析所有网络应用程序的框架。第5章的内容覆盖不同的操作模式。第6章讨论每个网络应用程序所包含的状态机。
  第7章给出了一个FTP客户端的源代码,这是书中最大的应用程序。第8~10章则对前面一直没有讨论过的所有的WinSock函数调用一一地展开详细讲述。第11章论述有关创建运行在WinSock DLL上的动态链接库的一些具体问题。第12章讲述将现有BSD Sockets源代码移植到16位或32位Windows平台上的一些问题和应对策略。
  从第13章开始,进入本书的收尾部分,并解决一些遗留问题。第13章详细介绍Windows Sockets应用程序调试技术和工具。第14章针对WinSock应用编程中的陷阱和容易犯的错误给出一般建议和具体措施。第15章介绍了目前提供WinSock API的多种不同的操作系统平台。第16章覆盖WinSock规范中的可选功能(有些是计划中的,有些则不是),并向读者介绍这些功能的应用场合和用法。最后,在第17章详细介绍WinSock规范2.0版本中的所有新功能。
  附录A给出因特网协议簇(TCP/IP)的协议首部的简短说明。附录B包含全部WinSock API的快速参考,包括函数、结构和宏(包含一些被遗忘的)。附录C提供了一份详细的WinSock错误参考信息。附录D包含应用程序编译和链接机制的一些细节。
读者对象
  虽然不要求读者具有任何网络、协议或者使用socket以及其他网络API进行网络编程的预备知识,但若有一些基础更好。本书既适用于初学者,也适用于有经验的网络应用程序开发人员,书中内容还包含了大量的Windows Sockets规范1.1版本中所没有的背景资料和说明信息,因此,即使WinSock应用开发高手也能通过阅读这本书而从中获益。
  读者应具有C语言编程和Microsoft Windows API(WinAPI或者Win32)的知识。
应用程序示例
  书中的应用程序示例采用Microsoft C 1.51版本(16位)和Microsoft C 2.0版本(32位)创建,与Borland C 4.0版本兼容,并与源代码一起提供支持上述平台的Makefile文件。应用程序都经过测试,测试平台涵盖了几乎所有的商用和共享版本的WinSock,网络测试环境为以太网和PPP(点到点协议)网络,使用本地和远程连接。
致谢
  这本书能够与读者见面得益于很多人的帮助和参与,在此向他们表示万分的感谢。特别要感谢读者,你们就是这本书存在的理由,祝愿你们成就不平凡的Windows Sockets应用。
  最要感谢的是Bob Quinn,是他的愿望孕育了这本书,而我只是为这本书的问世提供了一些必要的辅助工作。

Dave ShuteReading,MA
dks@world.std.com1995年5月

  有太多的人为本书的出版提供了帮助,任何一个致谢列表都不足以表达我的谢意,然而,我还是要特别地提到一些人。首先是我的家人,感谢他们的默默奉献,能与他们再次共度时光将是多么美好;其次是我的合著者兼朋友Dave Shute,他的那支红笔和他的智慧一样敏锐和宝贵。
  我十分感激FTP Software公司的Larry Backman、Mike Khalandovsky以及John Keller的支持和鼓励,特别要提到的是FTP Software公司的crack SDK支持人员Dave Barnard、Kerry Hannigan和Helen Sylvester,正是他们持续不断地质疑,教会了我在WinSock应用编程中应该怎样做,不应该怎样做,使我获益匪浅。
  我在WinSock 2.0规范解释工作小组的共同管理人Paul Brooks和Vikas Garg功不可没,他们为把光明洒向WinSock的黑暗角落付出了不倦的努力,他们不仅阐明了规范中的很多东西,也使书中的一些内容更加明晰。
  其他要提到的评阅人还有:Jim DeMarco、Fred Whiteside、Dave Andersen、Charlie Tai、Alun Jones、Eli Patashnik以及我们的顾问编辑Alan Feuer。
  感谢Addison-Wesley出版社友善的朋友们:John Wait、Mike Hendrickson、Kim Dawley、Marty Rabinowitz、Simone Payment和Katie Duffy。
  最后,我要向开创了Windows Sockets先河的Martin Hall和帮助他完成这项工作的合著者及其他奉献者致谢。一个好的想法的显著标志是它能促使你思考,“为什么我就没有想到!?”,这就是WinSock,一个了不起的想法。这个不争的事实已被随之而来的成功所证明。

Bob Quinn
rcq@ftp.com
韦斯顿于马萨诸塞州

封底文字

Windows Sockets网络编程
WinSock是一套标准的网络API,是Windows网络程序员可利用的优质资源,通过本书的阅读,能够使开发者充分挖掘WinSock的全部优势,并为使用其他网络协议体系的应用开发工作奠定了基础。
本书具有突出工作原理、实例丰富的特点,内容覆盖了从概念、原理、操作模式到实用编程的各个方面:
 全面介绍如何开发16位和32位环境下的WinSock应用程序;
 讲解socket网络编程所需服务和协议,着重介绍TCP/IP协议;
 结合代码示例生动讲解WinSock的三种工作模式及socket通信原理;
 以WinSock编程接口为依托,解析所有网络应用程序的框架。
 特别关注WinSock实现程序设计的兼容性,强调不同WinSock DLL的之间的差异;
 覆盖WinSock规范1.1版本中的所有函数,并详细介绍了WinSock 2的所有新特性;
 详解BSD Sockets源代码移植,以及WinSock的可选特性;
 分析网络应用程序开发中的其他陷阱和隐患,以及避免这些问题的方法;
 从应用开发的角度,对程序的调试和注意事项给出了详细的分析和建议;
 点睛如何创建运行于WinSock DLL上的动态链接库;
 提供详尽的参考示例,例如客户端和服务器程序示例,以及完整的网络服务程序示例等。

作者简介

(美)Bob Quinn Dave Shute 著:作者Bob Quinn在撰写这本书时供职于FTP Software 公司,具有多年从事TCP/IP网络开发的经验,主要负责FTP Software公司的WinSock DLL开发工作。其曾为WinSock规范1.1版本做出了重要的贡献,也是WinSock 2规范解释小组的负责人。作者Dave Shute 在撰写该书时是一位独立技术顾问,他在WinSock问世之初曾服务于 FTP Software公司,先后担任技术作者和市场主管。

译者简介

徐磊 腾婧 张莹 何慧 译:暂无简介

译者序

从最早实现TCP/IP协议体系的UNIX(BSD 4.3发布于1983年),到后起直追的Windows系列操作系统,TCP/IP协议栈已经成为各种主流操作系统必要和默认的组成部分,而Sockets API就是网络应用和TCP/IP协议栈之间的桥梁(WinSock 2也支持其他下层协议,但TCP/IP体系一直独领风骚)。
  就像作者借Cyril Connolly的名言所隐喻的那样,纵观UNIX和Windows两大操作系统阵营的发展历史,两者也曾有很多结合点,Windows Sockets API就是其中之一,它脱胎于UNIX的Berkeley Sockets API,继承了它的基本框架,包括最基本的流式socket和数据报socket的工作流程,WinSock都遵循着Berkeley Sockets原创的机制。Windows Sockets虽然脱胎于Berkeley Sockets,但是它也针对Windows消息驱动机制进行了扩展。在现实世界中,Windows Sockets已成为Windows网络编程事实上的标准,涉及微软所有桌面操作系统和嵌入式系统(Windows CE、Windows Mobile),因而得到了广大开发人员的重视。
  时至今日,很多开发平台都提供了基于组件和框架级别的网络API,然而,对于网络应用开发者来说,Windows Sockets API始终是实现高效和灵活的网络应用编程的不二选择。
  这本书的作者Bob Quinn和Dave Shute属于最早涉足Windows Sockets技术的人之一,其中,Bob Quinn为Windows Sockets 1.1版本做出了重要贡献,他也是WinSock 2规范工作解释小组的负责人,曾负责FTP Software公司的WinSock DLL开发工作,Dave Shute在Windows Sockets问世之初也曾服务于FTP公司,这就使得他们既能为读者详尽而系统地分析Windows Sockets规范及其实现,又能从应用开发的角度给读者以建议和指导。除此之外,本书还具有以下特色:
  1)突出工作原理。一般介绍应用编程接口规范及其实现的书很容易写成一本使用手册,而本书对Windows Sockets的概念、网络应用程序的工作机制、网络操作的3种工作模式以及TCP和UDP客户与服务器的工作流程等都有很生动、详细的讲解。
  2)示例丰富。既有客户端的程序示例,也有服务器端的程序示例,还有完整的网络服务程序示例。此外,在介绍协议首部的附录A中,作者也分别给出了同一子网和不同子网中客户机和服务器之间会话的示例,从ARP解析到连接管理,均给出图示,详尽到每个协议字段的值,体现作者严谨负责的写作态度。
  3)内容全面、系统、实用。全书共17章,内容覆盖了从概念、原理、操作模式到实用编程的各个方面,比较了Windows Sockets和Berkeley Sockets的差异和移植问题,专门介绍WinSock可选特性和WinSock 2的扩展特性,并从应用开发的角度对程序的调试和注意事项给出了详细的分析和建议。
  该书出版时,WinSock 2已经推出,因此,书中对于Windows Sockets 1.1和WinSock 2版本均展开了介绍。实际上,WinSock 2是Windows Sockets 1.1的超集(superset)。虽然现今所有的Windows系统(包括Windows CE和Windows Mobile)都支持WinSock 2,但是仍然同时提供Windows Sockets 1.1版本的DLL,以帮助那些不需要WinSock 2扩展特性的用户将程序限定在基本集上。
  若说有什么不足的话,那就是由于出版年代的原因,书中对于16位Windows平台下WinSock编程局限的讨论,在今天看来意义已经不大,32位平台的用户可以忽略这一部分内容。瑕不掩瑜,全书对Windows Sockets全面而又详尽的阐释,仍然是指导WinSock应用开发的“真经”。
  本书的翻译由4位译者合作完成,其中徐磊承担了第1~6章以及附录A的翻译工作,滕婧承担第13~17章以及附录B的翻译工作,张莹承担第8~11章以及附录D的翻译工作,何慧承担第7章、第12章和附录C的翻译工作。徐磊对全书的译文进行了必要的修改、润色和统稿。
  感谢身边朋友们的不吝赐教,感谢家人对我的默默支持。由于水平和时间所限,译者对原书中一些知识的传达可能不够到位,若有翻译错误和不妥之处,敬请读者指正。

徐磊
2012年5月

图书目录

译者序

前言
第1章 Windows Sockets概述1
 1.1 什么是Windows Sockets2
 1.2 Windows Sockets的发展历史3
 1.3 Windows Sockets的优势4
  1.3.1 Windows Sockets是一个开放的标准4
  1.3.2 Windows Sockets提供源代码可移植性4
  1.3.3 Windows Sockets支持动态链接5
  1.3.4 Windows Sockets的优点6
 1.4 Windows Sockets的前景7
 1.5 结论7
第2章 Windows Sockets的概念9
 2.1 OSI网络模型9
 2.2 WinSock网络模型11
  2.2.1 信息与数据12
  2.2.2 应用协议12
 2.3 WinSock中的OSI层次12
  2.3.1 应用层13
  2.3.2 表示层14
  2.3.3 会话层14
  2.3.4 传输层15
  2.3.5 网络层16
  2.3.6 数据链路层17
  2.3.7 物理层17
 2.4 模块化的层次框18
 2.5 服务和协议19
 2.6 协议和API21
第3章 TCP/IP协议服务23
 3.1 什么是TCP/IP23
 3.2 TCP/IP的发展历史25
 3.3 传输服务26
  3.3.1 无连接的服务:UDP26
  3.3.2 面向连接的服务:TCP28
  3.3.3 传输协议的选择:UDP与TCP的对比29
 3.4 网络服务30
  3.4.1 IP服务30
  3.4.2 ICMP服务31
 3.5 支持协议和服务32
  3.5.1 域名服务32
  3.5.2 地址解析协议33
  3.5.3 其他支持协议33
 3.6 TCP/IP的发展前景34
第4章 网络应用程序工作机制35
 4.1 客户端-服务器模型35
 4.2 网络程序概览37
 4.3 socket的打开37
 4.4 socket的命名39
  4.4.1 sockaddr结构40
  4.4.2 sockaddr_in结构40
  4.4.3 端口号41
  4.4.4 本地IP地址41
  4.4.5 什么是socket名称42
  4.4.6 客户端socket名称是可选的42
 4.5 与另一个socket建立关联43
  4.5.1 服务器如何准备建立关联44
  4.5.2 客户端如何发起一个关联45
  4.5.3 服务器如何完成一个关联47
 4.6 socket之间的发送与接收48
  4.6.1 在“已连接的”socket上发送数据48
  4.6.2 在“无连接的”socket上发送数据49
  4.6.3 接收数据50
  4.6.4 socket解复用器中的关联51
 4.7 socket的关闭52
  4.7.1 closesocket()52
  4.7.2 shutdown()53
 4.8 客户端和服务器概览54
第5章 操作模式56
 5.1 什么是操作模式57
  5.1.1 不挂机,等待:阻塞57
  5.1.2 挂机后再拨:非阻塞57
  5.1.3 请求对方回拨:异步58
 5.2 阻塞模式58
  5.2.1 阻塞socket58
  5.2.2 阻塞函数59
  5.2.3 伪阻塞的问题59
  5.2.4 阻塞钩子函数60
  5.2.5 阻塞情境61
  5.2.6 撤销阻塞操作62
  5.2.7 阻塞操作中的超时64
  5.2.8 无最少接收限制值65
  5.2.9 代码示例65
 5.3 非阻塞模式67
  5.3.1 怎样使socket成为非阻塞的68
  5.3.2 成功与失败不是绝对的68
  5.3.3 探询而非阻塞69
  5.3.4 显式地避让69
  5.3.5 代码示例70
 5.4 异步模式72
  5.4.1 认识异步函数73
  5.4.2 撤销异步操作74
  5.4.3 代码示例74
  5.4.4 AU_Time应用76
 5.5 性能比较85
 5.6 平台比较86
 5.7 真正的阻塞86
  5.7.1 线程化的应用程序86
  5.7.2 其他适用性说明87
第6章 socket状态88
 6.1 什么是socket状态88
  6.1.1 数据报socket的状态89
  6.1.2 流socket的状态90
 6.2 socket状态的检测方法91
  6.2.1 根据函数调用的成功或失败检测92
  6.2.2 同步检测93
  6.2.3 异步检测93
 6.3 WSAAsyncSelect()93
  6.3.1 WSAAsyncSelect()的工作原理94
  6.3.2 什么是WSAAsyncSelect()事件96
  6.3.3 避免机会丢失的窗口96
  6.3.4 什么是重使能函数97
  6.3.5 什么是通知消息98
  6.3.6 为函数失败做好准备98
  6.3.7 在响应时设置循环99
  6.3.8 撤销异步通知99
  6.3.9 事件描述99
  6.3.10 AS_Echo应用程序102
 6.4 select()115
  6.4.1 怎样使用select()116
  6.4.2 select()的宏117
  6.4.3 select()的输入参数118
  6.4.4 不要把select()作为定时器120
  6.4.5 注意0超时120
  6.4.6 代码示例120
 6.5 查看数据122
  6.5.1 ioctlsocket()FIONREAD命令122
  6.5.2 带有MSG_PEEK标志的recv()122
 6.6 带外数据123
  6.6.1 TCP的局限124
  6.6.2 ioctlsocket()函数和SIOCATMARK命令125
  6.6.3 代码示例125
 6.7 监听状态126
第7章 应用程序和函数实例库127
 7.1 FTP客户端实例127
  7.1.1 文件传输协议概述128
  7.1.2 FTP有限状态机130
  7.1.3 AC_FTP应用程序132
  7.1.4 操作中的AC_FTP168
 7.2 函数实例库169
  7.2.1 CenterWnd()170
  7.2.2 CloseConn()171
  7.2.3 CreateLclFile()172
  7.2.4 Dlg_About()173
  7.2.5 GetAddr()174
  7.2.6 GetBuf()175
  7.2.7 GetHostID()176
  7.2.8 GetLclDir()177
  7.2.9 GetPort()179
  7.2.10 WSAErrStr()179
  7.2.11 WSAperror()180
 7.3 WinSockx.h182
  7.3.1 Globals.c183
  7.3.2 WSA_Xtra.h184
第8章 主机名称与主机地址187
 8.1 主机名称与主机地址解析187
  8.1.1 hostent结构188
  8.1.2 主机名称解析189
  8.1.3 地址解析195
 8.2 主机表、域名系统和网络信息服务198
  8.2.1 主机表198
  8.2.2 域名系统198
  8.2.3 网络信息服务199
 8.3 本地主机信息200
 8.4 网络地址与格式化201
  8.4.1 in_addr结构201
  8.4.2 inet_addr()202
  8.4.3 inet_ntoa()203
 8.5 协议族与地址族204
第9章 socket信息与控制205
 9.1 socket控制205
  9.1.1 FIONBIO206
  9.1.2 FIONREAD207
  9.1.3 SIOCATMARK208
  9.1.4 其他控制命令208
 9.2 socket选项209
  9.2.1 getsockopt()与setsockopt()209
  9.2.2 SO_ACCEPTCONN211
  9.2.3 SO_BROADCAST211
  9.2.4 SO_DEBUG212
  9.2.5 SO_DONTLINGER213
  9.2.6 SO_DONTROUTE213
  9.2.7 SO_ERROR214
  9.2.8 SO_KEEPALIVE214
  9.2.9 SO_LINGER216
  9.2.10 SO_OOBINLINE218
  9.2.11 SO_RCVBUF与SO_SNDBUF218
  9.2.12 SO_REUSEADDR219
  9.2.13 SO_TYPE219
  9.2.14 TCP_NODELAY220
  9.2.15 不支持的选项221
  9.2.16 未来会使用的选项222
 9.3 阻塞钩子222
  9.3.1 WSASetBlockingHook()222
  9.3.2 WSAUnhookBlockingHook()223
  9.3.3 阻塞钩子函数223
  9.3.4 阻塞状态224
 9.4 socket 名称224
  9.4.1 getsockname()225
  9.4.2 getpeername()226
第10章 支持例程228
 10.1 启动与清除228
  10.1.1 WSAStartup()228
  10.1.2 WSACleanup()234
 10.2 字节顺序234
 10.3 服务名称与端口号236
  10.3.1 servent结构236
  10.3.2 服务解析237
  10.3.3 端口解析240
  10.3.4 服务数据库241
 10.4 协议名称与协议号242
  10.4.1 protoent结构243
  10.4.2 协议名称解析243
  10.4.3 协议号解析247
  10.4.4 协议数据库247
 10.5 报错248
  10.5.1 WSAGetLastError()248
  10.5.2 WSASetLastError()249
  10.5.3 错误文本显示249
第11章 WinSock上的DLL250
 11.1 创建一个新的API250
  11.1.1 仿真的API251
  11.1.2 应用协议API252
  11.1.3 封装的WinSock API252
 11.2 DLL的问题253
  11.2.1 重入254
  11.2.2 任务管理255
  11.2.3 与WinSock DLL的链接256
 11.3 DLL实例256
  11.3.1 WSASimpl应用程序257
  11.3.2 WSASimpl DLL258
第12章 移植BSD Sockets272
 12.1 Windows Sockets与Berkeley Sockets的差异272
  12.1.1 socket不是文件句柄273
  12.1.2 signal()不可用274
  12.1.3 域名不可用275
  12.1.4 地址信息和操作不可用275
  12.1.5 syslog()不可用276
  12.1.6 变量errno不可用276
  12.1.7 perror()和strerror()不可用276
  12.1.8 数据库文件操作不可用276
  12.1.9 bcmp()、bcopy()和bzero()不可用276
  12.1.10 本地IPC不可用277
  12.1.11 OOB API不同277
  12.1.12 setsockopt()SO_DEBUG是可选的277
 12.2 16位Windows的局限性277
  12.2.1 16位Windows不清理现场277
  12.2.2 16位Windows是非抢占式的278
  12.2.3 16位Windows文件系统不安全278
  12.2.4 16位Windows使用分段寻址279
  12.2.5 fork()不可用279
 12.3 移植Berkeley Sockets的其他事项279
  12.3.1 包含文件279
  12.3.2 socket域279
  12.3.3 socket类型279
  12.3.4 socket句柄280
  12.3.5 错误值280
 12.4 函数列表280
第13章 调试284
 13.1 问题类型284
  13.1.1 安装问题285
  13.1.2 网络问题285
  13.1.3 程序问题285
  13.1.4 WinSock DLL问题285
 13.2 故障表现及其定位286
 13.3 问题评估286
 13.4 安装调试287
 13.5 网络调试287
  13.5.1 通用网络调试288
  13.5.2 主机解析调试289
 13.6 应用程序调试289
 13.7 调试工具290
  13.7.1 网络调试工具290
  13.7.2 应用程序调试工具295
  13.7.3 WinSock符合性和性能测试工具297
  13.7.4 其他调试工具297
第14章 该做和不该做的299
 14.1 特征化应用程序299
 14.2 应用程序数据流300
  14.2.1 增大缓存301
  14.2.2 MTU的考虑301
  14.2.3 健壮性原则302
  14.2.4 避免查看303
  14.2.5 先接收后发送303
 14.3 流算法303
  14.3.1 发送结构化数据303
  14.3.2 发送交互数据305
  14.3.3 检测无效连接306
  14.3.4 验证数据传输306
 14.4 数据报算法307
  14.4.1 实现超时机制308
  14.4.2 数据报排序308
  14.4.3 有节制地发送数据308
  14.4.4 同步发送方和接收方309
 14.5 好消息准则309
  14.5.1 检查返回值309
  14.5.2 检测部分成功310
  14.5.3 准备应对任何阶段出现的任何错误310
  14.5.4 检测非致命错误310
  14.5.5 恰当地处理错误311
  14.5.6 对用户透明311
  14.5.7 留好出口311
  14.5.8 不忽视任何警告信息311
 14.6 常见陷阱和缺陷312
  14.6.1 打开和命名socket312
  14.6.2 建立连接313
  14.6.3 监听和同意建立连接313
  14.6.4 发送和接收314
  14.6.5 关闭socket315
  14.6.6 使用主机名称和地址316
  14.6.7 使用WSAAsyncSelect()函数316
  14.6.8 使用阻塞socket317
  14.6.9 退出某个应用程序319
  14.6.10 其他注意事项320
第15章 系统平台322
 15.1 WOSA网络模型322
 15.2 32位WinSock323
  15.2.1 Windows 95324
  15.2.2 交叉执行324
  15.2.3 32位WinSock特征324
  15.2.4 32位操作系统优势328
 15.3 其他系统平台329
第16章 可选特性330
 16.1 自相矛盾的可选标准330
 16.2 应该使用可选特性吗331
 16.3 原始socket332
  16.3.1 ICMP ping应用332
  16.3.2 IP_TTL路径跟踪337
 16.4 多播338
  16.4.1 为何使用多播338
  16.4.2 多播API339
  16.4.3 多播机制341
 16.5 环回接口345
 16.6 共享socket345
 16.7 可选项346
 16.8 socket作为文件句柄346
 16.9 在任何时候都准备好应对任何错误347
 16.10 其他可选特性347
第17章 WinSock 2348
 17.1 你需要WinSock 2吗349
 17.2 特性概述349
 17.3 多协议支持351
  17.3.1 WinSock 2架构351
  17.3.2 协议独立352
  17.3.3 名称空间独立353
 17.4 重叠I/O356
 17.5 分散和聚合358
 17.6 服务质量358
 17.7 socket组360
 17.8 多点和多播361
 17.9 有条件的接受362
 17.10 连接和断开数据363
 17.11 socket共享364
 17.12 协议相关的附加功能364
  17.12.1 WSAIoctl()365
  17.12.2 get/setsockopt()365
附录A TCP/IP协议首部366
 A.1 TCP/IP报文中的分层366
 A.2 ARP首部367
 A.3 IP首部368
 A.4 ICMP首部369
 A.5 IGMP首部370
 A.6 TCP首部371
 A.7 UDP首部372
 A.8 对话示例373
附录B 快速参考380
 B.1 结构380
 B.2 函数384
 B.3 宏391
附录C 错误信息参考398
 C.1 获取错误值的位置398
 C.2 可能出现的错误399
 C.3 用户可以解决的错误400
 C.4 详细的错误描述400
 C.5 按数值排序的错误代码表419
附录D 用户必备421
 D.1 重要文件421
 D.2 编译与链接机制422
 D.3 各种WinSock的使用423
 D.4 各种编程语言的使用424

教学资源推荐
作者: 徐明星 编著
作者: (美)Frank R.Giordano  William P.Fox  Steven B. Horton  Maurice D.Weir著
作者: 李丹 赵占坤 丁宏伟 石彦芳 编著
作者: 周启海
参考读物推荐
作者: (澳)Larry L.Constantine;Lucy A.D.Lockwood 著
作者: [美]朱塞佩·查博罗(Giuseppe Ciaburro) 巴拉伊·温卡特斯瓦兰(Balaji Venkateswaran) 著
作者: (美)Patrick J. Lynch Sarah Horton 著