UDP協議的通訊建立
UDP協議是網絡傳輸協議。那么UDP如何進行傳輸呢?如何完成兩個主機的通訊呢?下面我們就來分析一下。我們都知道,UDP協議是一種無連接協議,兩臺計算機之間的數據傳輸類似于傳遞郵件:消息從一臺計算機發送到另一臺計算機,但是兩者之間沒有明確的連接。 由于UDP協議不需要顯式的連接,就需要在兩個Winsock控件中間發送數據,關鍵需要完成以下的三步:
1.將RemoteHost屬性設置為另一臺計算機的名稱。
2.將RemotePort屬性設置為第二個控件的LocalPort屬性。
3.調用Bind方法,指定使用的LocalPort。
因為兩臺計算機的地位可以看成“對等的”,這種應用程序也被稱為點對點的應用程序。
下面將創建一個聊天應用程序,兩個人可以通過它進行實時的交談。請按照以下步驟制作:
1.創建一個新的Standard EXE工程。將缺省的窗體的名稱修改為frmPeerA,將窗體的標題修改為“Peer A”。
2.在窗體中放入一個Winsock控件,并將其命名為udpPeerA。在“屬性”頁上,單擊“協議”并將協議修改為 UDPProtocol。
3.在窗體中添加兩個TextBox控件。將第一個命名為txtSend,第二個命名為txtOutput。
4.為窗體添加如下的代碼。
Private Sub Form_Load()
′控件的名字為udpPeerA
With udpPeerA
′重點:必須將 RemoteHost 的值修改為對方計算機的名字。
RemoteHost= ″PeerB″
RemotePort = 1001 ′連接的端口號。
Bind 1002 ′綁定到本地的端口。
End With
frmPeerB.Show′顯示第二個窗體。
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
txtOutput.Text = strData
End Sub
我們要創建第二個UDP伙伴,請按照以下步驟執行:
1.在工程中添加一個標準窗體,將窗體的名字修改為 frmPeerB,將窗體的標題修改為“Peer B”。
2.在窗體中放入一個 Winsock 控件,并將其命名為 udpPeerB。
3.在“屬性”頁上,單擊“協議”并將協議修改為“UDPProtocol”。
4.在窗體上添加兩個 TextBox 控件。將第一個命名為 txtSend,第二個命名為 txtOutput。
5.在窗體中添加如下代碼
Private Sub Form_Load()
′控件的名字為 udpPeerB。
With udpPeerB
′重點:必須將RemoteHost的值改為對方計算機的名字。
RemoteHost= ″PeerA″
RemotePort = 1002 ′要連接的端口。
Bind 1001 ′綁定到本地的端口上。
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
txtOutput.Text = strData
End Sub
到此,UDP協議的通訊就建立好了。我們可以運行工程,然后在兩個窗體的txtSend TextBox中分別鍵入一些文本。鍵入的文字將出現在另一個窗體的txtOutput TextBox中。