用VB5 Winsock控件创建TCP\IP客户机 服务器程序[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 zxlkxy 的 blog

随着windows 95中文版和windows nt server 4.0中文版的流行, microsoft公司推出了相应平台上的开发软件: visual basic 5.0 中文企业 版。它为windows环境下的网络开发提供了强大的工具,winsock控件就是其中之一。

  winsock控件建立在tcp、udp协议的基础上,完成与远程计算机的通信。即使对tcp/ip不太熟悉的用户,使用该控件也可以在十几分钟内创建一个简单的客户机/服务器程序。下面我们对winsock控件的事件、方法、属性按其在程序中出现的顺序分别作详细的介绍,以便更好地理解程序源代码。

  服务器程序的实现过程是:

  (1)服务器程序必须设置好localport属性,作为侦听端口,该值为一个整数(只要是一个其它tcp/ip应用程序没有使用过的值即可)。

  (2)使用listen方法进入侦听状态,等待客户机程序的连接请求。

  (3)客户机程序发出连接请求,使服务器程序产生connectionrequest事件,该事件得到一个参数requestid。

  (4)服务器程序用accept方法接受客户机程序的requestid请求。这样,服务器程序就可以用senddata方法发送数据了。accept方法必须用上一步得到的requestid作为其参数。

  (5)当服务器程序接收到数据时,产生dataarrival事件,参数bytestotal包含接收到的数据字节数。在该事件中,可以用getdata方法接收数据。

  (6)如果接受到close事件,则用close方法关闭tcp/ip连接。

  客户机程序的实现过程是:

  (1) 客户程序设置remotehost属性,以便指定运行服务器程序的主机 名,该字符串可在“控制面板|网络|标识|计算机名”中查到。

  (2) 设置remoteport属性,以便指定服务器程序的侦听端口。

  (3)使用connect方法,向服务器提出连接请求。

  (4)服务器接受客户机程序的请求,客户机程序产生connect事件,就可以用senddata方法发送数据了。

  (5)当客户机程序接收到数据时,产生dataarrival事件,参数bytestotal包含接收到的数据字节数。在该事件中,可以用getdata方法接收数据。

  (6)如果接受到close事件,则用close方法关闭连接。

  winsock控件还有两个重要的属性,即protocol和state。protocol设定使用的协议是tcp还是udp:取值scktcpprotocol表示tcp, 取值sckudpprotocol则表示udp。因为winsock控件的缺省设置是scktcpprotocol,所以程序中并没有使用protocol属性。state属性反映的是当前tcp/ip的连接状态,取值如表1所示。

  表1 winsock控件的state属性及其描述

  

常数 描述
sckclosed 0    缺省值,关闭。
sckopen 1 打开。
scklistening 2 侦听
sckconnectionpending 3 连接挂起
sckresolvinghost 4 识别主机。
sckhostresolved 5 已识别主机
sckconnecting 6 正在连接。
sckconnected 7 已连接。
sckclosing 8 同级人员正在关闭连接。
sckerror 9   错误。

本文关键:Winsock,TCP\IP
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top