在分配 winsock 数组成员给连接请求前,有办法知道客户端的 ip 地址吗?
Load Winsock(7)
Winsock(7).Accept requestID
一般要这样后才能:
winsock(7).RemoteHostIP
请问有办法能在分配 winsock 数组成员前就知道客户端的 ip 吗?
因为想实现根据不同的 ip 分配特定的 winsock 数组成员号。
应该可以实现的吧,在 Winsock_ConnectionRequest 时客户端 ip 应该已经可以获得了。。
请教高手,谢谢。
[解决办法]
可以的,见
Private Sub SvrWinsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
MsgBox SvrWinsock(0).RemoteHostIP '获得ClientIP
Dim freeSock As Integer, aptIndex As Integer, Item As ListItem
freeSock = 0
For i = 1 To intMax '在Winsock数组中查找有无空闲的Sock,
If SvrWinsock(i).State = sckClosed Then
freeSock = i
Exit For
End If
Next
If freeSock = 0 Then
intMax = intMax + 1
Load SvrWinsock(intMax)
SvrWinsock(intMax).Accept requestID
aptIndex = intMax
Else
SvrWinsock(freeSock).Accept requestID
aptIndex = freeSock
End If
SvrWinsock(aptIndex).Tag = "WaitForCmd"
Set Item = ClientList.ListItems.Add(, "s" & Str(aptIndex), Str(aptIndex))
Item.SubItems(2) = SvrWinsock(aptIndex).RemoteHostIP
Item.SubItems(3) = SvrWinsock(aptIndex).RemotePort
End Sub