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进行讨论。
**************** **
运行图: 。
但是都是复制来复制去,来来去去就那一两个例子,而且大都无法运行,方法不够简洁,给初学者带来一定的难度。
我也是刚接触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进行讨论。
**************** **
运行图: 。
相关文章推荐
- VB中利用winsock控件,TCP协议实现多客户端连接
- 在VB中实现客户端程序自动查找并连接服务端程序
- 利用Winsock控件实现局域网通信 ,VB写的提供一个思路和方法
- 利用socket TCP协议实现客户端与服务端简单通信
- vb 利用ADO.Net实现数据库的连接,修改,删除,插入操作
- [转]VB实现自动取得服务器IP并连接服务器(利用UDP广播)
- VB实现自动取得服务器IP并连接服务器(利用UDP广播)
- 利用VB实现对IE的调用与控制
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
- 利用JK连接Apache与Tomcat,实现负载均衡
- VB中利用API函数实现屏幕颜色数设定
- 利用Ajax实现长连接(模拟推送,半长连接)
- VB:用Winsock控件数组作服务的实现过程范例
- Java 利用 JDBC 连接 Sqlsever2012 实现 增删改查
- window下利用SQLyog实现远程连接Linux下MySQL
- Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
- 利用ssh反向代理和autossh实现从外网连接内网服务器
- 利用FrameLayout连接一组view实现流畅的左右滑动
- 利用C++ Builder实现网络连接检测程序(转)
- 利用远程桌面连接实现外网对局域网计算机的控制