在windows平台上,创建网络应用程序通常会借助于Windows Sockets ,Sockets译为套接字,一个套接字是通信的一端,客户与服务器之间即可通过套接字彼此通信。Windows Sockets是Windows下网络编程的规范,简称Winsock,虽然不同的应用服务和所使用的应用协议均有所不同,但所有的网络程序都能简化为一个简单的Winsock网络编程模型。
要想使用Winsock创建网络应用程序,需要遵守一定的编程约定,下面将对Winsock技术进行简要说明。
1.Winsock介绍
Windows Sockets是一套开放的、支持多种协议的Windows下的网络编程接口。1991年发布了1.0版,在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成为Windows网络编程事实上的标准。
Windows Sockets规范建立在Bekeley套接口模型上,是以U.C. Berkeley 大学UNIX中流行的Socket接口为范例而设定的一套Windows网络编程接口。这个规范针对Windows的增加了扩展库函数,这样一来程序员使用Winsock在windows上编程时,能充分利用其消息驱动机制。
Winsock主要有两个版本,即Winsock 1和Winsock 2,现在使用较多的是第二版,同第一版相比,第二版增加了很多功能。要使用winsock2编写应用程序,需要添加winsock2.h头文件,同时还要链接到WS2_32.lib库,如果使用MFC,这一切已经被自动设定,就无需再手动添加。
Winsock工作的层次位于应用程序与底层通信协议之间,应用程序可调用Winsock的API实现相互之间的通讯,而实际的通信工作由Winsock利用下层的网络通讯协议功能和操作系统调用完成。
2.WinSock编程过程
对于网络上任意两个应用程序来说,彼此之间开始工作的绝对时间是难以确定的。而且由于网络本身的特性(流量负载变化等因素的影响),使得数据包到达对方的时间是不可预计的。鉴于上述原因,在设计每一对网络应用程序时,都应让它们按顺序执行互补的网络操作,而不是同时执行。对于客户端/服务器模式的应用来说,服务器端的程序首先启动,然后等待连接信息,客户端程序后启动,并发起连接,连接创建之后,二者之间就可以通信了。