控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

VB.NET中Winsock控件的使用详解(二)

作者:不详 出处:IT专家网 2010年02月03日 阅读:

1)、如何允许更多客户端同时连接

  当您的应用程序架构是属于主从式架构时,一般来说,客户端应该不止一个而已。但是,如果每一个客户端使用的一组连接端口时,那么如果有100个客户端呢?如果有1000个客户端呢?那么究竟要增加多少个winsock控件呢?同时,也得要分成 100(或是1000)组accept子程序,接着每一部客户端都必须记得固定的连接端口号。

  其实,您大可不必如此辛苦。您可以利用Visable Basic控件数组的方式并利用监听用的数组元素(一般都是索引值“0”),来触发ConnectRequest事件。接下来再利用判别控件数组元素的连接状态来进行远程客户端连接。以下的程序代码范例,就是如何让许多远程用户连接到同一个连接端口号的程序代码的模板:


   private connmax as long
  private sub form_load ()
  dim I as integer
  connmax =200
  sckserver(0).localport=1001
  sckserver(0).listen
  for I =1 to connmax
  load sckserver(i)
  next
  end sub
  private sub sckserver_connectionrequest(index as integer,byval requestid as long)
  dim I as intege
  for I =1 to connmax
  if sckserver(1).state=sckclosed then
  sckserver(I).accept requestid
  end if
  end if
  end sub


  在上述的程序范例中,将会建立一个具有“201”个元素的sckserver控件数组。接着,利用for。。。next循环的方式,来设置加载sckserver控件数组元素或是判断数组元素是否正在连接中进而允许客户端连接。至于sckserver控件数组总元素为“201”的原因在于——“connmax设置为200再加上sckserver(0),因此总元素数量为201”。

  四、UDP连接的基础

  在建立UDP的应用程序时,其过程会比TCP协议简单许多。这是由于UDP协议在数据传送之前,可以不需要特别明确的连接方式。但是,在上述的TCP连接方式之中,Winsocke控件必须设置在“监听(Linsten)”状态之下,同时在客户端准备与主机进行连接时,主机端也必须要使用Accept方法来允许客户端所要求的连接。

  反观在UDP协议方面,双方仅仅需要使用Bind方法,即可与对方连接并且传输数九,因此,UDP协议连接过程的处理方式确实比TCP简单许多。下面介绍使用UDP协议来传送信息的过程。

  1、UDP的连接范例

  在此只做简单的介绍

  窗体frm PeerA的设计内容

  如图下图所示

  

  窗体的程序代码

     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

  窗体frmpeerB的设计内容

  如下图所示

  

  窗体frmpeerB的程序代码


      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

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统