用WINSOCK实现聊天室的VC++程序设计(4) BerkeleySockets的重要扩充,主要是增加了一些异步函数,并增加了 符合Windows消息驱动特性的网络事件异步选择机制。WINDOWSSOCKETS 规范是一套开放的、支持多种协议的Windows下的网络编程接口。从 1991年的1.0版到1995年的2.0.8版,经过不断完善并在Intel、 Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成 为Windows网络编程的事实上的标准。目前,在实际应用中的 WINDOWSSOKCETS规范主要有1.1版和2.0版。两者的最重要区别是1.1版 只支持TCP/IP协议,而2.0版可以支持多协议。2.0版有良好的向后兼容 性,任何使用1.1版的源代码,二进制文件,应用程序都可以不加修改地 在2.0规范下使用。 SOCKET实际在计算机中提供了一个通信端口,可以通过这个端口 与任何一个具有SOCKET接口的计算机通信。应用程序在网络上传输,接 收的信息都通过这个SOCKET接口来实现。在应用开发中就像使用文件句 柄一样,可以对SOCKET句柄进行读,写操作。 二、基于WINDOWS SOCKET的应用开发介绍。 在WINDOWS95/98,WINDOWSNT进行WINSOCK开发使用的编程语言有很多, VC++,JAVA,DELPHI,VB等。其中VC时使用最普遍,和WINSOCK结合最 紧密的。并且VC++对原来的WindowsSockets库函数进行了一系列封装, 继而产生了CAsynSocket、CSocket、CSocketFile等类,它们封装着 有关Socket的各种功能,是编程变得更加简单。但如果你是一个 WINSOCK编程的初学者,那么建议你在一开始还是学习WINSOCK最基本的 API函数进行编程,这样可以大大加深对WINSOCK的了解,对将来很有好 处。 在VC中进行WINSOCK的API编程开发,需要使用到下面三个文件: 1、WINSOCK.H: 这是WINSOCK API的头文件。 2、WSOCK32.LIB: WINSOCK API连接库文件。在使用中,一点要把它作为项目 的非缺省的连接库包含到项目文件中去。 3、WINSOCK.DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。 WINSOCK接口在WINDOWS编程环境中的位置如下图所示: 可以看到,WINSOCK。DLL位于TCP/IP协议栈和应用程序之间。也就 是说,WINSOCK管理与TCP/IP协议的接口。在一开始WINSOCK的应有开 发时,你不必对TCP/IP协议有很深刻的了解。但是,如果想成为一个为 网络编程的高手,就一定要对下层了解得十分清楚。 在网络编程中最常用的方案便是客户机/服务器模型。在这种方案中 客户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周 知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态, 直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程 序被“惊醒”并且为客户提供服务-对客户的请求作出适当的反应。虽 然基于连接协议(流套接字)的服务是设计客户机/服务器应用程序时的 标准,但有些服务也是可以通过无连接协议(数据报套接字)提供的。 其编程模型分别如下: 面向连接协议的SOCKET编程模型 ======================================================= 无连接协议的SOCKET编程模型 ====================================================== 一般在使用中,面向连接协议的SOCKET编程模型应用最为广泛,因 为面向连接协议提供了一系列的数据纠错功能,可以保证在网络上传输 的数据及时、无误地到达对方。 总的来说,使用SOCKET接口(面向连接或无连接)进行网络通信时, 必须按下面简单的四步进行处理: 1、程序必须建立一个 SOCKET。 2、程序必须按要求配置此SOCKET。也就是说,程序要么将此 SOCKET连接到远方的主机上,要么给此SOCKET指定一个 本地协议端口。 3、程序必须按要求通过此SOCKET发送和接收数据。