吕娜
【摘 要】随着互联网在各个领域中的应用,计算机应用系统的开发也由传统方式转向网络环境。V B提供了基于Windows Sockets网络编程接口的Winsock控件,使得开发TCP/IP变得简单、轻松。本文简要介绍Winsock控件的属性及应用方法。
【关键词】Winsock;控件;属性;应用
随着互联网在各个领域中的应用,计算机应用系统的开发也由传统方式转向网络环境。由此Visual Basic提供了基于Windows Sockets网络编程接口的Winsock控件,使得开发TCP/IP变得简单、轻松。本文简要说明Winsock控件的属性及应用方法。
Winsock控件是一个在运行中不可见的控件,可以很容易的访问TCP和UDP网络服务,使用它不需要了解TCP/IP的具体细节。只要设置Winsock控件的属性和调用该控件的方法,就可以轻松编写网络应用程序、连接到远程计算机并进行双向的数据交换。
1 Winsock控件的属性
(1)BytesReceived(接受数据的字节数)反映接收到的数据量,它以字节为单位,是只读属性,在设计时不可用。
(2)LocalHostName(本地机器名),LocalIP(本地机器IP地址),LocalPort(本地机器通信程序端口),此属性构成本地机器的网络地址。
LocalHostName,LocalIP为只读属性,返回本地机器名和IP地址。
(3)RemoteHost(远程机器名称),RemoteHostIP(远程机器的IP地址),RemotePort(远程机器通信程序端口),此属性构成远程机器的网络地址。
RemoteHost和RemotePort用于设置远程主机和端口号,RemoteHost应用是一字符串,它可以是域名,也可以是IP地址。例如:要同IP地址为202.99.6.100,端口号为1024的程序通信,可设置为:
Winsockl.RemoteHost=202.99.6.100
Winsockl.RemotePort=1024
(4)SocketHandle(提供给调用Winsock API的句柄参数)用于调用低层Winsock API函数。在要求较高的情况下,可调用API来成更复杂的操作。
(5)State(连接的当前状态)属性为返回当前状态,在应用中常读取其值已得到当前状态,从而决定下一步的处理。
2 Winsock控件的应用方法
(1)Accept方法
用于接受TCP连接请求。在TCP建立连接时,当有连接请求时,用此方法接受请求建立连接。调用格式如下:Winsock对象.Accept Request ID
(2)Bind方法
用于存在多协议接口卡的情况下,用此方法把接口卡和IP地址捆绑在一起。调用格式为:Winsock对象.Bind端口号,IP地址
(3)Close方法
用于关闭一个TCP连接。调用格式为:Winsock对象.Close
(4)Connect方法
用于向远程主机发出连接请求。调用格式为:Winsock对象. Connect﹝远程主机IP,远程端口﹞
(5)Listen方法
用于服务器程序,等待客户访问。调用格式为:Winsock对象. Listen
(6)GetData和PeerData方法
这两种方法都用来获取接受数据。GetData方法取回数据后清除接收缓冲区,PeerData方法只是获取当前接收数据拷贝,不清除缓冲区。调用格式为:Winsock对象. GetData(PeerData)变量﹝,数据类型﹝,最大长度﹞﹞
(7)SendData方法
用于发送数据,可用在TCP和UDP两种方式下。调用格式为:
Winsock对象. SendData数据
3 Winsock控件的主要事件
(1)ConnectRequest事件
当远程计算机请求连接时出现,仅适用于TCP服务器应用程序。当本地计算机接收到远程计算机发送的连接请求时,控件的ConnectRequest事件将会被触发。
(2)SendProgress事件
在发送数据期间出现。当一端的计算机正在向另一端的计算机发送数据时,SendProgress事件将被触发。SendProgress事件记录了当前状态下已发送的字节数和剩余字节数。
参数:bytesSent是从上一次激活事件以来已发送的字节数:bytesRemaining是在发送缓冲区等待发送时的字节数。
(3)SendComplete事件
在完成一个发送操作时出现。当所有数据发送完成时,被触发。
(4)DataArrival事件
当数据到达时出现。DataArrival事件连接后,接受到了新数据就会触发这个事件。注意:如果在接受到新数据前,缓冲区中非空,就不会触发这个事件。
(5)Error事件
发生错误时出现。当在工作中发生任何错误都会触发这个事件。
4 Winsock控件应用实例
TCP是一种面向连接的服务,连接两台计算机就可彼此进行数据传输。UDP 是一种双向无连接协议。跟 TCP 的操作不同,计算机并不建立连接。另外 UDP 应用程序可以是客户机,也可以是服务器;所以程序编写上比TCP方式简单。我们使用UDP建立一个“聊天”程序,“聊天”是指两个程序能够发送数据给对方,在此两者之间是平等的、处于同一地位,没有服务和客户的区别。
建立【聊天A】程序的步骤:
(1)打开VB6.0中文版,建立标准程序,设置窗体标题为“聊天A”。
(2)把Winsock控件拖到窗体中,设置Protocol属性为I-sckUDPProtocol,其他属性为缺省值。
(3)在窗体放置两个标签和文本框,设置两个标签的Caption属性分别为“接收窗”和“发送窗”。
编写代码:
(1)在Form Load过程中设置网络地址,设置LocalPort,RemoteHost和RemotePort属性。
【聊天A】的RemoteHost设置为运行【聊天B】程序的主机地址。
【聊天A】的RemotePort设置要与【聊天B】的LocalPort属性一致。
(2)在文本框的Change事件中,发送用户输入数据。
(3)有数据到达时,显示对方数据内容。
到此【聊天A】程序设计完成,保存将其编译为执行文件。因为A、B是平等的,所以【聊天B】程序设计,只需要按上述原则在Form Load中设置好网络地址其他部分则完全与A相同。
【参考文献】
[1]张树兵,戴红,陈哲.Visual Basic6.0中文版入门与提高[M].北京:清华大学出版社,1999.
[2]曾强聪.isual Basic6.0程序设计教程[M].北京:中国水利水电出版社,2003.
[责任编辑:汤静]