tempad
ReadyGo!技术成就梦想 >>VB教程 >> 在VB中使用UDP协议

在VB中使用UDP协议

ReadyGo!技术成就梦想 网络搜索 efish 2008-2-24 2:47:34
UDP协议基础:

  UDP(UserDatagramProtocol)是一种无连接协议,与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=“UDPApplication(1)”
  Winsock控制:Name=“udpPeerA”Protocol=“sckUDPProtocol”
  文本框1(TextBox):Name“txtSend”
  文本框2(TcxtBox):Name=“txtOutput”MultiLine-TrueScrollBars=2

  然后打开代码窗口,分别在相应的事件下输入以下代码:
  PrivateSubForm_Load()
  WithudpPeerA
  .RemoteHost=“197.1.1.2”"要连接到的计算机名
  .RemotePort=1010"要连接到的端口号
  .LocalPort=1011"该Winsock控制将要使用的本地端口号,便于其它端与该Winsock通讯
  .Bind1011"将该Winsock控制绑定到该本地端口
  EndWith
  EndSub
  PrivateSubtxtSend_Change()
  udpPeerA.SendDatatxtSend.Text"发送文本
  EndSub
  PrivateSubudpPeerA_DataArrival(ByValbytesTotalAsLong)
  DimstrDataAsString
  udpPeerA.GetDatastrData,vbString
  txtOutput.Text=strData
  EndSub

  UDP应用二:

  类似建立UDPServer的方法,在表单上添加一个Winsock控制及两个文本框,然后进行以下属性的设置:

  表单(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”"要连接到计算机的IP地址
  .RemotePort=1011"要连接到的端口号
  .LocalPort=1010"该Winsock控制将使用的本地端口号,便于其它方与之通讯
  .Bind1010"将该Winsock控制绑定到该本地端口
  EndWith
  EndSub
  PrivateSubtxtSend_Change()
  udpPeerB.SendDatatxtSend.Text"发送文本
  EndSub
  PrivateSubudpPeerB_DataArrival(ByValbytesTotalAsLong)
  DimstrDataAsString
  udpPeerB.GetDatastrData,vbString
  txtOutput.Text=strData
  EndSub

  要运行该实例,打开两个VisualBasic的事例,然后分别运行这两个工程文件即可。若要在不同的机器上运行此两例,只需要将两个工程文件中的RemoteHost改变成相应的计算机的IP地址或域名即可。->

责任编辑: efish 参与评论 查找更多:
相关文章
在VB中如何得到网络中某一台电脑(电脑名)的网卡地址? 在VB中如何得到网络中某一台电脑(电脑名)的网卡地址?
VB邮件检查程序(二) VB邮件检查程序(二)
VB邮件检查程序(一) VB邮件检查程序(一)
PING一个IP地址(向它发送一个数据包并等待回应)) PING一个IP地址(向它发送一个数据包并等待回应))
用VB编写标准CGI程序(上) 用VB编写标准CGI程序(上)
用VB编写异步多线程下载程序 用VB编写异步多线程下载程序
跟我学做记事本 跟我学做记事本
制作带有动画和声音的屏幕保护程序 制作带有动画和声音的屏幕保护程序
基于Win95的VB5串口通信程序 基于Win95的VB5串口通信程序
用VisualBasic5.0设计E-mail程序(MAPI) 用VisualBasic5.0设计E-mail程序(MAPI)
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想