当有多个客户端请求连接WinSock服务器时端口问题.
当有多个客户端请求连接WinSock服务器时端口问题.
我用Winsock(0).listen,当有客户端连接过来时,用一个新的winSocket数组成员来Accept,WinSock(0)仍然listen. 在
WinsockReceive(i).LocalPort = 0
WinsockReceive(i).Accept requestID
之后,发现每个请求过来LocalPort都是同一个端口号(服务器监听端口).
我的问题是:用这种方式的话,每个客户端都使用的是同一个端口号在与服务器进行通信吧,这样当客户端较多时会不会有冲突.怎么解决此问题.我是做的一个文件接收服务器,可能同时有多个用户同时发图片文件到服务器.求赐教,急等,谢了.
Private Sub WinsockReceive_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Dim sIp As String ' 当前远程请求者的IP地址
Dim i As Long
sIp = WinsockReceive(0).RemoteHostIP
i = 1
Do While i <= WinsockReceive.UBound '检查是否已经有该地址的记录
If WinsockReceive(i).RemoteHostIP = sIp Then
' WinsockReceive(i).LocalPort = 0
If err.Number = 0 Then '如果没有错误,即搜索到可用的存在的IP地址
WinsockReceive(i).Close
WinsockReceive(i).Accept requestID
Exit Sub
ElseIf err.Number <> 0 Then
err.Clear
End If
End If
i = i + 1
Loop
'如果这个连接请求是新的,那么,就增加新的控件实例
'向集合中加入该客户端的IP地址。
colHostName.Add WinsockReceive(0).RemoteHostIP
Load WinsockReceive(i) '否则,加载新的控件
WinsockReceive(i).LocalPort = 0
WinsockReceive(i).Accept requestID
End Sub