VB中Winsock控制的UDP协议的使用
UDP协议基础:
UDP(用户数据报协议)是一种无连接协议。与TCP操作不同,计算机之间不需要建立连接。同时,一个UDP应用程序可以同时充当该应用程序的客户端或服务器。
因为UDP协议不需要建立显式连接,所以建立UDP应用比TCP应用要容易得多。在TCP应用程序中,Winsock控件必须显式设置为“listen”,而其他Winsock控件必须使用Connect方法来启动连接。
使用UDP协议在两个Winsock控制器之间发送数据时,连接两端必须完成以下三个步骤:
1 .将RemoteHost属性设置为另一台计算机的名称;
2。将RemotePort属性设置为由第二个Winsock控制的LocalPort属性的值;
3。申请绑定方法。
通过使用Bind方法,可以将Winsock控件绑定到本地端口,以便Winsock控件可以使用该端口执行类似TCP的“侦听”功能,并阻止其他应用程序使用该端口。
使用此协议传输数据时,首先设置客户端计算机的LocalPort属性。作为服务器的计算机只需要将RemoteHost属性设置为客户端计算机的IP地址或域名,将其RemotePort属性设置为客户端计算机上的LocalPort属性即可。然后,客户端计算机可以通过应用SendData方法开始发送信息,并且客户端计算机可以在其DataArrial事件中使用GetData方法来获取发送的信息。
下面的示例演示了一个“talk”应用程序,它允许彼此进行实时对话。
UDP应用1:
新建一个标准的EXE项目文件,在窗体上拖拽一个Winsock控件,在窗体上添加两个文本框。然后设置以下属性:
form:name = " frmpeera " caption = " UDP application(1)"
Winsock control:name = " UDP peera " protocol = " sckudpropocol "
Textbox 1(Textbox):name " txtsend "/br/]Textbox 2(tcxtbox):name = " txt output " multiline-true scrollbars = 2
然后打开代码窗口。在相应的事件下输入以下代码:
private subform _ load()
with udppeera
。remotehost = "197.1.1.2 " '要连接的计算机的名称
。“RemotePort=1010”要连接到的端口号
。LocalPort=1011 '该Winsock控制要使用的本地端口号,便于其他终端与Winsock进行通信
。“Bind 1011”将Winsock控件绑定到本地端口
END WITH
END SUB
PRIVATE suxtsend _ CHANGE()
UDP pera . Send data txt Send . text '发送文本
END SUB
PRIVATE su B- UDP peera _ data arrival(Byval bytestotal As long)
Dim strData As String
UDP peera。GetData strData,VBString
txtoutput . text = strData
end sub
UDP application 2:
类似于建立UDP服务器的方法,在窗体中添加一个Winsock控件和两个文本框。然后设置以下属性:
form:name = " frmpeerb " caption = " UDP application(2)"
Winsock control:name = " udppeerb " protocol = " SCKUDPROTCLOOL "
Textbox 1(Textbox):name = " txtsend "
Textbox 2(Textbox):name = " txt output " multiline = true scrollbars = 2
然后输入以下代码:
private subform _ load()
Withremote host = " 197 . 1 . 1 . 2 "
要连接的计算机的IP地址。“RemotePort=1011”要连接到的端口号
。LocalPort=1010 '该Winsock控制要使用的本地端口号,方便其他方与之通信
。“Bind 1010”将Winsock控件绑定到本地端口
end with
end sub
private sub txtsend _ change()
UDP peer b。SendData txtSend。“Text”发送文本
end sub
private sub UDP perb _ data arrival(byval bytestotal as long)
Dimstrdata as string
udppeerb . get data strdata,vbstring
txt output . text = strdata
end sub
若要运行此实例,请打开Visual Basic的两个实例,然后分别运行这两个工程文件。要在不同的机器上运行这两个例子,只需要将两个工程文件中的RemoteHost改为对应计算机的IP地址或域名即可(以上例子是在Visual Basic 5.0和PWIN97上传递的)。
0条评论