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