VB:用Winsock控件数组作服务的实现过程范例
来源:互联网 发布:td lte网络架构 编辑:程序博客网 时间:2024/05/22 19:24
Visual Basic CodePrivate Type SockServerInfo
Enabled As Boolean
End Type
Dim Server ( ) As SockServerInfo
Private Sub Form_Load ( )
CreateServer
End Sub
Private Sub Winsock1_ConnectionRequest ( _
Index As Integer, _
ByVal requestID As Long )
If Winsock1 ( Index ) .State <> 0 Then Winsock1 ( Index ) .Close
Winsock1 ( Index ) .Accept requestID
CreateServer
End Sub
Private Sub Winsock1_DataArrival ( Index As Integer, ByVal bytesTotal As Long )
Dim NetWorkString As String
Winsock1 ( Index ) .GetData NetWorkString, vbString, bytesTotal
Print "Index " & Index & " 收到数据:" & NetWorkString
Winsock1 ( Index ) .SendData "转发回去的数据"
End Sub
Private Sub Winsock1_Error ( Index As Integer, _
ByVal Number As Integer, _
Description As String, _
ByVal Scode As Long, _
ByVal Source As String, _
ByVal HelpFile As String, _
ByVal HelpContext As Long, _
CancelDisplay As Boolean )
CancelDisplay = True
Winsock1_Close Index
End Sub
Private Sub Winsock1_Close ( Index As Integer )
StopServer Index
End Sub
Private Sub CreateServer ( )
Dim ServerMaxCount As Long
Dim X As Long
Dim IsHaveFalse As Long
On Error Resume Next
ServerMaxCount = UBound ( Server )
If Err.Number <> 0 Then
ServerMaxCount = 0
ReDim Server ( ServerMaxCount )
Else
IsHaveFalse = 0
For X = 0 To ServerMaxCount
If Server ( X ) .Enabled = False Then
ServerMaxCount = X
IsHaveFalse = 1
Exit For
End If
Next X
If IsHaveFalse = 0 Then
ServerMaxCount = ServerMaxCount + 1
ReDim Preserve Server ( ServerMaxCount )
End If
Load Winsock1 ( ServerMaxCount )
End If
Winsock1 ( ServerMaxCount ) .LocalPort = 60000
Winsock1 ( ServerMaxCount ) .Listen
Server ( ServerMaxCount ) .Enabled = True
End Sub
Private Sub StopServer ( Index As Integer )
Dim ServerMaxCount As Long
If Winsock1 ( Index ) .State <> 0 Then Winsock1 ( Index ) .Close
On Error Resume Next
ServerMaxCount = UBound ( Server )
If Index = ServerMaxCount Then
If Index = 0 Then
Erase Server
Else
Unload Winsock1 ( Index )
ReDim Preserve Server ( ServerMaxCount - 1 )
End If
Else
Unload Winsock1 ( Index )
Server ( Index ) .Enabled = False
End If
End Sub其实概念很简单,主要是处理好控件数组的创建和释放就可以了
Enabled As Boolean
End Type
Dim Server ( ) As SockServerInfo
Private Sub Form_Load ( )
CreateServer
End Sub
Private Sub Winsock1_ConnectionRequest ( _
Index As Integer, _
ByVal requestID As Long )
If Winsock1 ( Index ) .State <> 0 Then Winsock1 ( Index ) .Close
Winsock1 ( Index ) .Accept requestID
CreateServer
End Sub
Private Sub Winsock1_DataArrival ( Index As Integer, ByVal bytesTotal As Long )
Dim NetWorkString As String
Winsock1 ( Index ) .GetData NetWorkString, vbString, bytesTotal
Print "Index " & Index & " 收到数据:" & NetWorkString
Winsock1 ( Index ) .SendData "转发回去的数据"
End Sub
Private Sub Winsock1_Error ( Index As Integer, _
ByVal Number As Integer, _
Description As String, _
ByVal Scode As Long, _
ByVal Source As String, _
ByVal HelpFile As String, _
ByVal HelpContext As Long, _
CancelDisplay As Boolean )
CancelDisplay = True
Winsock1_Close Index
End Sub
Private Sub Winsock1_Close ( Index As Integer )
StopServer Index
End Sub
Private Sub CreateServer ( )
Dim ServerMaxCount As Long
Dim X As Long
Dim IsHaveFalse As Long
On Error Resume Next
ServerMaxCount = UBound ( Server )
If Err.Number <> 0 Then
ServerMaxCount = 0
ReDim Server ( ServerMaxCount )
Else
IsHaveFalse = 0
For X = 0 To ServerMaxCount
If Server ( X ) .Enabled = False Then
ServerMaxCount = X
IsHaveFalse = 1
Exit For
End If
Next X
If IsHaveFalse = 0 Then
ServerMaxCount = ServerMaxCount + 1
ReDim Preserve Server ( ServerMaxCount )
End If
Load Winsock1 ( ServerMaxCount )
End If
Winsock1 ( ServerMaxCount ) .LocalPort = 60000
Winsock1 ( ServerMaxCount ) .Listen
Server ( ServerMaxCount ) .Enabled = True
End Sub
Private Sub StopServer ( Index As Integer )
Dim ServerMaxCount As Long
If Winsock1 ( Index ) .State <> 0 Then Winsock1 ( Index ) .Close
On Error Resume Next
ServerMaxCount = UBound ( Server )
If Index = ServerMaxCount Then
If Index = 0 Then
Erase Server
Else
Unload Winsock1 ( Index )
ReDim Preserve Server ( ServerMaxCount - 1 )
End If
Else
Unload Winsock1 ( Index )
Server ( Index ) .Enabled = False
End If
End Sub其实概念很简单,主要是处理好控件数组的创建和释放就可以了
- VB:用Winsock控件数组作服务的实现过程范例
- 真正的VB木马,不用WINSOCK控件
- 基于VB Winsock 控件的聊天程序
- vb.net中Winsock控件的使用
- VB Winsock控件问题
- 基于VB中WINSOCK控件的网上象棋系统的实现
- VB中WinSock控件的属性、方法、事件及应用
- VB中WinSock控件的属性、方法、事件及应用
- VB中WinSock控件的属性、方法、事件及应用
- VB中WinSock控件的属性、方法、事件及应用
- VB用XML实现在线翻译范例
- 用VB Winsock控件创建TCP/IP客户机/服务器程序
- 用VB Winsock控件创建TCP/IP客户机/服务器程序
- VB.NET中实现控件数组的方法
- VB.NET中实现控件数组的功能
- vb控件数组 的使用
- VB.NET实现动态加载控件数组
- VB中使用WinSock控件传送文件
- HDU--warmup(1001)
- Qt-exec()
- org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set 解决方法
- 六、cocos2dx-效果(Effect)
- error C2440: 'static_cast' LRESULT LRESULT错误
- VB:用Winsock控件数组作服务的实现过程范例
- 15个步骤创立技术公司,并收获千万用户(完结)
- 你会回答这些问题吗?
- MFC调试出错:Unhandled exception in aa.exe:0xC0000005:Access Violation
- 设置vc中MFC的Button颜色和字体,CButton继承类的三色和字体设置
- MFC的图片按钮
- 画笔类CPen
- MFC修改button的颜色、背景、边框、对话框标题
- 01-第一个android小应用Hello,world