vb中利用winsock控件,tcp协议实现多服务端连接
关于vb中利用winsock控件,tcp协议实现多服务端连接的问题,网上的资料很多,
但是都是复制来复制去,来来去去就那一两个例子,而且大都无法运行,方法不够简洁,给初学者带来一定的难度。 我也是刚接触vb不久的初学者,结合msdn对多连接的介绍, 于是就有了下面的例子(目 前最短的最好理解的,不信可以去Google比较一下) 原创by:Login 欢迎到小站www.host900.com进行讨论。完成于2010-1-18 客户端 (接受多个连接) 有不懂得可以加我QQ:672308444,我会详细解释。另外欢迎到小站www.mycrazy.ucoz.com进行讨论。 只有两个winsock控件,一个名为listener作为监听;另一个为listen(index属性设为0)控件数组,用来就受新的连接 (当有服务端连接时,会显示为新连接分配的listen控件数组的下标,下标从零开始) (当有服务端发送数据时,会在窗体上显示发送数据的服务端被分配的listen控件数组的下标,下标从零开始) 客户端代码: Dim upi As Integer '存放空闲listen控件的数组的下标,,[声明部分变量] Public Sub findfreeandloadsck() '查找空闲的listen数组中空闲的控件并加载 '现在当前数组范围内查找空闲的listen Dim i As Integer For i = 0 To listen.UBound If listen(i).State <> 7 Then upi = i listen(i).Close MsgBox upi Exit Sub End If Next i '如果上面的没有找到,然后增加数组的大小,使用新的空闲listen upi = listen.UBound + 1 On Error Resume Next Load listen(upi) End Sub Private Sub Form_Load() If listener.State <> 0 Then listener.Close listener.LocalPort = 808 listener.listen Private Sub listener_ConnectionRequest(ByVal requestID As Long) '使用listener作为listen的管理,为新的连接调用空闲的listen成员 Call findfreeandloadsck listen(upi).Accept requestID Private Sub listen_DataArrival(Index As Integer,ByVal bytesTotal As Long) Print Index 测试时可以打开多个服务端分别连接客户端,我在本人的电脑上测试无误. 服务端 有两个文本框(接收连接ip和端口号名分别为ip和por t),三个按钮(用来断开和连接和发送数据,名分别为stop,conn和send),一个label(名为state)和一个winsock控件名为wsk Private Sub Conn_Click() '连接按钮 If wsk.state <> 7 Then wsk.Close wsk.RemoteHost = ip.Text wsk.RemotePort = port.Text wsk.Connect Private Sub send_Click() '发送按钮 If wsk.state = 7 Then wsk.SendData sendText.Text sendText.Text = "" Private Sub stop_Click() '断开按钮 If wsk.state <> 0 Then wsk.Close state.Caption = "连接状态:" & "[" & wsk.state & "]" & ":已断开" Private Sub wsk_Connect() state.Caption = "连接状态:" & "[" & wsk.state & "]" & ":已连接" ****************** **************** ** 运行图:。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |