vb socket通信 1服务器N客户端(服务器使用同一端口)(1)

最近写了一个通过socket通信程序,要求1服务器N客户端(服务器使用同一端口),下面把代码贴出来,大家分享一下:

服务器端:
'定义常量
Const BUSY As Boolean = False
Const FREE As Boolean = True
'定义连接状态
Dim ConnectState() As Boolean


Private Sub Form_Load()
'
ReDim Preserve ConnectState(0 To 1)
On Error Resume Next
ConnectState(0) = FREE
ConnectState(1) = FREE
'指定网络端口号
Listener.LocalPort = 6005
'开始侦听
Listener.Listen

lblContent.Caption = "启动成功!"
End Sub

 

Private Sub Listener_ConnectionRequest(ByVal requestID As Long)
Dim SockIndex As Integer
Dim SockNum As Integer
On Error Resume Next
txtSql.Text = txtSql.Text & Chr(10) & "连接请求"

'查找连接的用户数
SockNum = UBound(ConnectState)
If SockNum > 14 Then
Form1.Print SockIndex & ""
Exit Sub
End If
'查找空闲的sock
SockIndex = FindFreeSocket()
'如果已有的sock都忙,而且sock数不超过15个,动态添加sock
If SockIndex > SockNum Then
Load scksever(SockIndex)
End If
ConnectState(SockIndex) = BUSY
scksever(SockIndex).Tag = SockIndex
'接受请求
scksever(SockIndex).Accept (requestID)
txtSql.Text = txtSql.Text & "接受请求"
End Sub

 

Private Sub scksever_Close(Index As Integer)
'
If scksever(Index).State <> sckClosed Then
scksever(Index).Close
End If
ConnectState(Index) = FREE

End Sub

 

Private Sub scksever_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If scksever(Index).State <> 0 Then scksever(Index).Close
scksever(Index).Accept requestID
End Sub

 

Private Sub scksever_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)
MsgBox "错误" & Number & Description, vbOKOnly, "注意!"
End Sub
'寻找空闲的sock
Public Function FindFreeSocket()
Dim SockCount, i As Integer
SockCount = UBound(ConnectState)
For i = 0 To SockCount
If ConnectState(i) = FREE Then
FindFreeSocket = i
Exit Function
End If
Next i
ReDim Preserve ConnectState(0 To SockCount + 1)
FindFreeSocket = UBound(ConnectState)
End Function

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值