我是用sckserver(0)专门监听,从sckserver(1)开始为连接各个用户的连接
Private Sub sckserver_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim i As Integer
Dim bfind As Boolean
bfind = False
If Index = 0 Then
For i = 1 To intmax
If sckserver(i).State = 0 Then
sckserver(i).Accept requestID
bfind = True
Exit For
End If
Next
If bfind = False Then
intmax = intmax + 1 'intmax为全局变量初始值为1
Load sckserver(intmax)
sckserver(intmax).Accept requestID
End If
End If
End Sub退出时://Index 为退出人的号即:其dataarrival 中的Index
Do While sckserver(Index).State <> 0
DoEvents
Loop
If Index = intmax And intmax <> 1 Then '是最后一个,则将其释放
Unload sckserver(intmax)
intmax = intmax - 1
End If
Private Sub sckserver_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim i As Integer
Dim bfind As Boolean
bfind = False
If Index = 0 Then
For i = 1 To intmax
If sckserver(i).State = 0 Then
sckserver(i).Accept requestID
bfind = True
Exit For
End If
Next
If bfind = False Then
intmax = intmax + 1 'intmax为全局变量初始值为1
Load sckserver(intmax)
sckserver(intmax).Accept requestID
End If
End If
End Sub退出时://Index 为退出人的号即:其dataarrival 中的Index
Do While sckserver(Index).State <> 0
DoEvents
Loop
If Index = intmax And intmax <> 1 Then '是最后一个,则将其释放
Unload sckserver(intmax)
intmax = intmax - 1
End If
我也是用sckserver(0)来监听,客户端也用了两个winsock,一个用于connect。当和sckserver(0)连上以后,sckserver(0)将空闲的remoteport传给客户端,而客户端则用另外一个winsock去连这个remoteprt。
我觉得这样做很麻烦,不知道可否用更好的方法。