wns9778.com_威尼斯wns.9778官网

热门关键词: wns9778.com,威尼斯wns.9778官网
wns9778.com > 计算机教程 > VB中Winsock控制的UDP协议的使用

原标题:VB中Winsock控制的UDP协议的使用

浏览次数:182 时间:2019-11-16



 

 

      

 

    对于局域网用户中的编程爱好者来说,如果能自己编一个局域网通信程序,那么这一切将是多么美妙!可是,如果要从头开始完全由自己来编写一段用于通信的程序,必须对相关的网络协议及其他的一些较底层的技术有较深入的了解,这可不是一件容易的事。而现在有了Winsock控件,一切就不同了,它已经替你封装了所有烦琐的技术细节,并提供了访问TCP和UDP网络服务的方便途径。你只需通过设置控件的属性并调用其方法就可轻易连接到一台远程计算机中,并且还可以双向交换数据,而这一切都不需你了解TCP的细节或调用低级的Winsock APIs。

  UDP协议基础:

  Winsock控件可以供Microsoft Acess、Visual Basic,Visual C 或Visual Foxpro的开发人员使用。本文以Visual Basic 6企业版为开发环境来向大家介绍一下Winsock控件的初步应用。

  UDP(User Datagram Protocol)是一种无连接协议,与TCP操作不同,计算机间并不需要建立一个连接,同时,一个UDP应用可同时作为应用的客户或服务器方。

 

  由于UDP协议并不需要建立一个明确的连接,因此建立UDP应用要比建立TCP应用简单得多。在TCP应用中,一个Winsock控制必须明确地设置成“监听”,而其它Winsock控制则必须使用Connect方法来初始一个连接。

  Winsock控件可以使用两种协议:TCP协议和UDP协议,下面来分别介绍。

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

 

  1.设置RemoteHost属性为其它计算机的名称;

  TCP协议即数据传输协议,它允许创建和维护与远程计算机的连接,使其彼此可以进行数据传输。利用TCP协议通讯必须分别建立客户应用程序和服务器应用程序。

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

 

  3.申请Bind方法。

  在创建客户应用程序时,必须知道服务器计算机名或其IP地址(存于RemoteHost属性)、及服务器计算机进行侦听的端口(存于RemotePort属性),然后调用Connect方法。

  通过使用方法Bind,则可将该Winsock控制捆绑到一个本地端口,以便该Winsock控制使用该端口来进行类似TCP的“监听”功能,并防止其它应用使用该端口。

 

  使用该协议传送数据,首先设置客户计算机的LocalPort属性。而作为服务器的计算机仅需要设置RemoteHost属性为客户计算机的IP地址或域名即可,并将其RemotePort属性设置成客户计算机上的LocalPort属性即可,然后就可通过申请SendData方法来开始信息发送,客户计算机则可在其DataArrial事件中使用方法GetData来获取发送的信息。

  创建服务器应用程序时,就应相应设置一个侦听端口(LocalPort属性)并调用listen方法。当客户机需要连接时(connect),就会发生ConnectionRequest事件。为了完成连接,你可以在ConnectionRequest事件中调用Accept方法。建立连接后,任何一方计算机都可以发送、接收对方数据。如果你要发送数据,需调用SendData方法。当接收到数据时,会发生DataArrival事件,调用DataArrival事件中的GetData方法就可以获得对方传送的数据。

  下例具体演示了一个“谈话”应用,以允许相互间进行实时的交谈。

 

  UDP应用一:

  说了这么多,大家可能还是不太了解,让我用程序来详细说明。

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

 

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

  如果只有两台计算机,那十分容易。假设甲机为客户机,乙机为服务器,且其IP为192.192.192.1,接收端口为1200(任意选一个未被使用的端口即可)。首先在甲机客户端程序中加入一个Winsock控件,起名为sckconnect,并设置其属性:RemoteHost=“192.192.192.1”,(即甲机IP地址), RemotePort=1200(即甲机侦听端口);再在乙机服务器程序中假如一个名为sckserver(0)的Winsock控件,其LocalPort=1200,

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

 

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

  在乙机服务器程序中Form_Load()加入

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

 

  然后打开代码窗口,分别在相应的事件下输入以下代码:

  sckserver(0).bind sckserver(0).LocalPort 与本地端口绑定

  Private Sub Form_Load()

 

   With udpPeerA

  sckserver(0).listern 侦听

   .RemoteHost = "197.1.1.2" 要连接到的计算机名

 

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

  如果要传输数据,两机必须先建立连接。建立连接的程序如下:

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

 

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

  甲机客户机要先请求连接

   EndWith

 

  End Sub

  sckconnect.connect sckconnect.RemoteHost, sckconnect.RemotePort

  Private Sub txtSend_Change()

 

   udpPeerA.SendData txtSend.Text发送文本

  此句执行时会触发服务器程序中的ConnectRequest事件,在此过程中决定是否建立连接,其代码如下:

  End Sub

 

  Private Sub udpPeerA_DataArrival(ByVal bytesTotal As Long)

  Private sub sckserver_connectionrequest(index as Integer,Byval requestid as long)

   Dim strData As String

 

   udpPeerA.GetData strData,vbString

  if sckserver.count=1 then

wns9778.com,   txtOutput.Text = strData

 

  End Sub

  load sckserver(1)

  UDP应用二:

本文由wns9778.com发布于计算机教程,转载请注明出处:VB中Winsock控制的UDP协议的使用

关键词: wns9778.com

上一篇:洛谷P1962 斐波那契数列,p1962斐波那契数列

下一篇:没有了