国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

在VB中使用UDP協(xié)議

2019-11-18 17:27:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
UDP協(xié)議基礎(chǔ):

  UDP(UserDatagramPRotocol)是一種無(wú)連接協(xié)議,與TCP操作不同,計(jì)算機(jī)間并不需要建立一個(gè)連接,同時(shí),一個(gè)UDP應(yīng)用可同時(shí)作為應(yīng)用的客戶或服務(wù)器方。
  由于UDP協(xié)議并不需要建立一個(gè)明確的連接,因此建立UDP應(yīng)用要比建立TCP應(yīng)用簡(jiǎn)單得多。在TCP應(yīng)用中,一個(gè)Winsock控制必須明確地設(shè)置成“監(jiān)聽(tīng)”,而其它Winsock控制則必須使用Connect方法來(lái)初始一個(gè)連接。

  使用UDP協(xié)議,在兩個(gè)Winsock控制間進(jìn)行數(shù)據(jù)的發(fā)送,在連接的兩端必須完成以下三步:
  1.設(shè)置RemoteHost屬性為其它計(jì)算機(jī)的名稱;
  2.設(shè)置RemotePort屬性為第二個(gè)Winsock控制的LocalPort屬性的值;
  3.申請(qǐng)Bind方法。

  通過(guò)使用方法Bind,則可將該Winsock控制捆綁到一個(gè)本地端口,以便該Winsock控制使用該端口來(lái)進(jìn)行類似TCP的“監(jiān)聽(tīng)”功能,并防止其它應(yīng)用使用該端口。

  使用該協(xié)議傳送數(shù)據(jù),首先設(shè)置客戶計(jì)算機(jī)的LocalPort屬性。而作為服務(wù)器的計(jì)算機(jī)僅需要設(shè)置RemoteHost屬性為客戶計(jì)算機(jī)的ip地址或域名即可,并將其RemotePort屬性設(shè)置成客戶計(jì)算機(jī)上的LocalPort屬性即可,然后就可通過(guò)申請(qǐng)SendData方法來(lái)開(kāi)始信息發(fā)送,客戶計(jì)算機(jī)則可在其DataArrial事件中使用方法GetData來(lái)獲取發(fā)送的信息。

  下例具體演示了一個(gè)“談話”應(yīng)用,以允許相互間進(jìn)行實(shí)時(shí)的交談。

  UDP應(yīng)用一:

  建立一個(gè)新標(biāo)準(zhǔn)EXE工程文件,拖放一個(gè)Winsock控制到表單上,添加兩個(gè)文本框到表單上,然后進(jìn)行以下屬性的設(shè)置:

  表單(Form):Name=“frmPeerA”Caption=“UDPapplication(1)”
  Winsock控制:Name=“udpPeerA”Protocol=“sckUDPProtocol”
  文本框1(TextBox):Name“txtSend”
  文本框2(TcxtBox):Name=“txtOutput”MultiLine-TrueScrollBars=2

  然后打開(kāi)代碼窗口,分別在相應(yīng)的事件下輸入以下代碼:
  PrivateSubForm_Load()
  WithudpPeerA
  .RemoteHost=“197.1.1.2”'要連接到的計(jì)算機(jī)名
  .RemotePort=1010'要連接到的端口號(hào)
  .LocalPort=1011'該Winsock控制將要使用的本地端口號(hào),便于其它端與該Winsock通訊
  .Bind1011'將該Winsock控制綁定到該本地端口
  EndWith
  EndSub
  PrivateSubtxtSend_Change()
  udpPeerA.SendDatatxtSend.Text'發(fā)送文本
  EndSub
  PrivateSubudpPeerA_DataArrival(ByValbytesTotalAsLong)
  DimstrDataAsString
  udpPeerA.GetDatastrData,vbString
  txtOutput.Text=strData
  EndSub

  UDP應(yīng)用二:

  類似建立UDPServer的方法,在表單上添加一個(gè)Winsock控制及兩個(gè)文本框,然后進(jìn)行以下屬性的設(shè)置:

  表單(Form):Name=“frmPeerB”Caption=“UDPApplication(2)”
  Winsock控制:Name=“udpPeerB”Protocol=“sckUDPProtoclool”
  文本框1(TextBox):Name=“txtSend”
  文本框2(TextBox):Name=“txtOutput”MultiLine=TrueScrollBars=2

  然后輸入以下代碼:
  PrivateSubForm_Load()
  WithudpPeerB
  .RemoteHost=“197.1.1.2”'要連接到計(jì)算機(jī)的IP地址
  .RemotePort=1011'要連接到的端口號(hào)
  .LocalPort=1010'該Winsock控制將使用的本地端口號(hào),便于其它方與之通訊
  .Bind1010'將該Winsock控制綁定到該本地端口
  EndWith
  EndSub
  PrivateSubtxtSend_Change()
  udpPeerB.SendDatatxtSend.Text'發(fā)送文本
  EndSub
  PrivateSubudpPeerB_DataArrival(ByValbytesTotalAsLong)
  DimstrDataAsString
  udpPeerB.GetDatastrData,vbString
  txtOutput.Text=strData
  EndSub

  要運(yùn)行該實(shí)例,打開(kāi)兩個(gè)VisualBasic的事例,然后分別運(yùn)行這兩個(gè)工程文件即可。若要在不同的機(jī)器上運(yùn)行此兩例,只需要將兩個(gè)工程文件中的RemoteHost改變成相應(yīng)的計(jì)算機(jī)的IP地址或域名即可。->


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 汤原县| 新余市| 大英县| 陆良县| 巴青县| 北流市| 柳江县| 武鸣县| 山东省| 寿光市| 井陉县| 静乐县| 佳木斯市| 南充市| 蒙城县| 大余县| 高青县| 平陆县| 陕西省| 汉川市| 西青区| 咸宁市| 栖霞市| 泾川县| 涪陵区| 涿鹿县| 佛山市| 安平县| 海淀区| 芮城县| 玉树县| 北宁市| 成安县| 玛沁县| 龙陵县| 瑞安市| 文登市| 古交市| 彰武县| 太仆寺旗| 平远县|