快捷搜索:

VB中Winsock控制的UDP协议的使用

VB中Winsock节制的UDP协议的应用

UDP协议根基:

UDP(User Datagram Protocol)是一种无连接协议,与TCP操作不合,谋略机间并不必要建立一个连接,同时,一个UDP利用可同时作为利用的客户或办事器方。

因为UDP协议并不必要建立一个明确的连接,是以建立UDP利用要比建立TCP利用简单得多。在TCP利用中,一个Winsock节制必须明确地设置成“监听”,而其它Winsock节制则必须应用Connect措施来初始一个连接。

应用UDP协议,在两个Winsock节制间进行数据的发送,在连接的两端必须完成以下三步:

1.设置RemoteHost属性为其它谋略机的名称;

2.设置RemotePort属性为第二个Winsock节制的LocalPort属性的值;

3.申请Bind措施。

经由过程应用措施Bind,则可将该Winsock节制绑缚到一个本地端口,以便该Winsock节制应用该端口来进行类似TCP的“监听”功能,并防止其它利用应用该端口。

应用该协议传送数据,首先设置客户谋略机的LocalPort属性。而作为办事器的谋略机仅必要设置RemoteHost属性为客户谋略机的IP地址或域名即可,并将其RemotePort属性设置成客户谋略机上的LocalPort属性即可,然后就可经由过程申请SendData措施来开始信息发送,客户谋略机则可在其DataArrial事故中应用措施GetData来获取发送的信息。

下例详细演示了一个“发言”利用,以容许互相间进行实时的交谈。

UDP利用一:

建立一个新标准EXE工程文件,拖放一个Winsock节制到表单上,添加两个文本框到表单上,然落后行以下属性的设置:

表单(Form):Name=“frmPeerA” Caption=“UDP Application(1)”

Winsock节制:Name=“udpPeerA” Protocol=“sckUDPProtocol”

文本框1(TextBox): Name“txtSend”

文本框2(TcxtBox): Name=“txtOutput” MultiLine-True ScrollBars=2

然后打开代码窗口,分手在响应的事故下输入以下代码:

Private Sub Form_Load()

With udpPeerA

.RemoteHost=“197.1.1.2” '要连接到的谋略机名

.RemotePort=1010 '要连接到的端口号

.LocalPort=1011 '该Winsock节制将要应用的本地端口号,便于其它端与该Winsock通讯

.Bind 1011 '将该Winsock节制绑定到该本地端口

EndWith

End Sub

Private Sub txtSend_Change()

udpPeerA.SendData txtSend.Text'发送文本

End Sub

Private Sub udpPeerA_DataArrival(ByVal bytesTotal As Long)

Dim strData As String

udpPeerA.GetData strData,vbString

txtOutput.Text = strData

End Sub

UDP利用二:

类似建立UDP Server的措施,在表单上添加一个Winsock节制及两个文本框,然落后行以下属性的设置:

表单(Form):Name=“frmPeerB” Caption=“UDP Application(2)”

Winsock节制:Name=“udpPeerB” Protocol=“sckUDPProtoclool”

文本框1(TextBox):Name=“txtSend”

文本框2(TextBox):Name=“txtOutput” MultiLine=True ScrollBars=2

然后输入以下代码:

Private Sub Form_Load()

With udpPeerB

.RemoteHost=“197.1.1.2” '要连接到谋略机的IP地址

.RemotePort=1011 '要连接到的端口号

.LocalPort=1010 '该Winsock节制将应用的本地端口号,便于其它方与之通讯

.Bind 1010 '将该Winsock节制绑定到该本地端口

End With

End Sub

Private Sub txtSend_Change()

udpPeerB.SendData txtSend.Text '发送文本

End Sub

Private Sub udpPeerB_DataArrival(ByVal bytesTotal As Long)

Dim strData As String

udpPeerB.GetData strData,vbString

txtOutput.Text=strData

End Sub

要运行该实例,打开两个Visual Basic的事例,然后分手运行这两个工程文件即可。若要在不合的机械上运行此两例,只必要将两个工程文件中的RemoteHost转变成响应的谋略机的IP地址或域名即可(以上例子在Visual Basic 5.0及PWIN97上经由过程)。

您可能还会对下面的文章感兴趣: