您的位置:首页 > 理论基础 > 计算机网络

vb中利用winsock控件,tcp协议实现多服务端连接

2012-06-02 19:50 501 查看
关于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)

listen(i).Close

MsgBox upi

End Sub

Private Sub Form_Load()

If listener.State <> 0 Then listener.Close

listener.LocalPort = 808

listener.listen

End Sub

Private Sub listener_ConnectionRequest(ByVal requestID As Long) '使用listener作为listen的管理,为新的连接调用空闲的listen成员

Call findfreeandloadsck

On Error Resume Next

listen(upi).Accept requestID

End Sub

Private Sub listen_DataArrival(Index As Integer, ByVal bytesTotal As Long)

Print Index

End Sub

测试时可以打开多个服务端分别连接客户端,我在本人的电脑上测试无误.

有不懂得可以加我QQ:672308444,我会详细解释。另外欢迎到小站www.mycrazy.ucoz.com进行讨论。

服务端

有两个文本框(接收连接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

End If

End Sub

Private Sub send_Click() '发送按钮

If wsk.state = 7 Then

wsk.SendData sendText.Text

sendText.Text = ""

End If

End Sub

Private Sub stop_Click() '断开按钮

If wsk.state <> 0 Then wsk.Close

state.Caption = "连接状态:" & "[" & wsk.state & "]" & ":已断开"

End Sub

Private Sub wsk_Connect()

state.Caption = "连接状态:" & "[" & wsk.state & "]" & ":已连接"

End Sub

******************

测试时可以打开多个服务端分别连接客户端,我在本人的电脑上测试无误.

有不懂得可以加我QQ:672308444,我会详细解释。另外欢迎到小站www.mycrazy.ucoz.com进行讨论。

**************** **

运行图: 。







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: