结晶。WinSock1.0 规范的发布
是为了让网络软件供应商和应用程序开发者都能够开始建立各自符合WinSock 标准的实现和
应用程序。
2.WinSock1.1
WinSock1.1 除了继承WinSock1.0 的准则和结构外,还作了一些必要的改动。这些改动
除了包含了一些更加清晰的说明和对WinSock1.0 的小改动之外,还包含了如下重大的变更。
? 为了更加简单的得到主机名和地址,增加了gethostncom()函数。
? 在DLL 中保留了小于1000 的序数,而对大于1000 的序数则没有限制,这使WinSock
供应商可以在DLL 中加入自己的界面,而不用担心所选择的序数会和WinSock 将来
的版本冲突。
? 增加了WSAStartup()函数和WSACleanup()函数之间的关联,要求两个函数对应,这使
得应用程序开发者和第三方DLL 在使用WinSock 实现时不需要考虑其他函数对这套
API 的调用。
? 调整函数in_addr()的返回类型,in_addr 的结构改为无符号长整型,这个改动是为了适
应不同的C 编译器对返回类型为4 字节结构函数的不同处理方法。
? 把WSASsyncSelect()函数语义从“边缘触发”改为“电平触发”,这种方式大大简化了
应用程序对这个函数的调用。
? 改变了ioctlsocket()函数中FIONBIO 的语义。如果套接字还未完成WSASsyncSelect()
函数的调用,则该函数返回失败。
? 为了符合RFC1122,在套接字选项中增加了TCP_NODELAY。
不过WinSock1.1 版本只支持TCP/IP 协议。
3.WinSock2.0
WinSock2.0 是WinSock1.1 发展的一个比较重大的变革。它可以支持多种协议,并且为
了能与WinSock1.1 更好地实现其兼容xìng,WinSock2.0 在WinSock1.1 基础上作了向后兼容,
即源码和二进制代码。这就实现了WinSock 应用程序和任何版本的WinSock 实现之间的最大
的互cāo作xìng,同时也减轻了WinSock 应用程序使用者、网络协议栈提供者和服务提供者的负
担。
11.2 网络应用程序
11.2.1 网络应用程序的基本模型
在TCP/IP 网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式
(Client/Server model),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·282·
务。客户机/服务器模式的建立基于以下两点:
(1)建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造
就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。
(2)网络间进程通信完全是异步的,相互通信的进程间既不存在父子关