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