Winsock控件的属性及应用方法

2016-04-26 11:41吕娜
科技视界 2016年9期
关键词:属性控件应用

吕娜

【摘 要】随着互联网在各个领域中的应用,计算机应用系统的开发也由传统方式转向网络环境。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.

[责任编辑:汤静]

猜你喜欢
属性控件应用
对两种实体观的探析
ASP.NET服务器端验证控件的使用
Spreadsheet控件在Delphi数据库系统中的编程与应用