用WINSOCK实现聊天室的VC++程序设计(2) 的非缺省的连接库包含到项目文件中去。 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发送和接收数据。 4、程序必须关闭此SOCKET。 三:WINSOCK API主要函数简介 作者利用WINSOCK API 编写了一个具有聊天室功能 的应用程序,可用作学习 WINSOCK 程序设计的参照。WINSOCK API 包 括很多函数,但其中最常用,包括在文章所附源程序中的有: 注:只是有关函数的简要说明,具体规则、说明请参见VC++帮助和 WINSOCK规范。 函数名 功能 说明 WSAStartup() 连结应用程序与 Windows Sockets DLL 的第一个函数 此函数是应用程序调用 Windows Sockets DLL函数中的第一个,也唯有此函数呼叫成功後,才可以再调用其他 Windows Sockets DLL 的函数。 WSACleanup() 结束 Windows Sockets DLL 的使用 当应用程序不再需要使用 Windows Sockets DLL时,须调用此函数来注销使用,以便释放其占用的资源。 socket() 建立Socket 此函数用来建立一 Socket 描述字,并为此 Socket 建立其所使用的资源。 closesocket() 关闭某一Socket 此一函数是用来关闭某一 Socket bind() 将一本地地址与一个SOCKET描述字连接在一起 此函数在服务程序上使用,是调用监听函数listen()必须要调用的函数 listen() 设定 Socket 为监听状态,准备被连接 此函数在服务程序上使用,来设定 Socket 进入监听状态,并设定最多可有多少个在未真正完成连接前的客户端的连接要求。(目前最大值限制为 5, 最小值为1) accept() 接受某一Socket的连接要求,以完成面向连接的客户端 Socket 的连接请求 服务端应用程序调用此函数来接受客户端Socket 连接请求,accept() 函数的返回值为一新的 Socket,新 Socket 就可用来在服务端和客户端之间的信息传递接收,而原来 Socket 仍然可以接收其他客户端的连接要求. connect() 要求连接某一Socket到指定的网络上服务端 此函数用在客户端,用来向服务端要求建立连接。当连接建立完成後,客户端即可利用此 Socket 来与服务端进行信息传递。