随着时代的发展,我们已经步入了信息化时代,网络的普及和应用,使得越来越多的编程人员加入网络软件开发的行列。不过现在对于比较完整的介绍在局域网中多个站点互连的文章,笔者还未见到,这篇文章较完整的介绍了如何利用Visual Basic 6的Winsock控件实现局域网中多个站点在客户机/服务器模式下的互连,并给出了几种连接方案进行比较,对于Winsock编程过程中遇到的一些问题做了解答。
这里对Winsock控件的属性、方法和事件的介绍限于篇幅就不介绍了,下面以最简单的C/S模式下一台服务器和一台客户机的连接来说明其整个连接过程。
用框图表示如图1所示。首先运行服务器端的程序,使TcpServer处于监听状态,然后运行客户机端的程序,单击【连接服务器】按钮后,客户机端调用Connect方法呼叫服务器(根据RemoteHostIP远程计算机IP地址和RemotePort远程计算机端口号两个参数),然后客户机便处于正在连接服务器状态,等待服务器的响应。客户机调用Connect方法触发了服务器ConnectRequest事件,这时服务器端可以在此事件中判断是否要接受客户机的请求,如要就调用Accept方法,并置标志位说明已成功连接客户机。服务器端调用Accept方法后又触发了客户机端Connect事件,说明服务器端接受客户端的请求,双方已经建立连接了,这时再置客户机端的标志位,这就是一个完整的连接过程。当服务器或客户机调用Close方法关闭连接时,都会触发对方的Close事件,使其关闭连接。另外建立连接后发送数据的情况是客户机通过调用SendData方法发送数据给服务器,会触发服务器端的DataArrival事件,在这个事件中,服务器端可以调用GetData或PeekData方法把客户机发来的数据保存起来。服务器给客户机发信息同理。要注意一点的是,在服务器的Close事件中应该加上继续监听的代码,这样客户机才可以继续呼叫服务器。