Load Winsock(7)
Winsock(7).Accept requestID一般要这样后才能:winsock(7).RemoteHostIP请问有办法能在分配 winsock 数组成员前就知道客户端的 ip 吗?因为想实现根据不同的 ip 分配特定的  winsock 数组成员号。应该可以实现的吧,在 Winsock_ConnectionRequest 时客户端 ip 应该已经可以获得了。。请教高手,谢谢。

解决方案 »

  1.   

    可以的,见Private Sub SvrWinsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)MsgBox SvrWinsock(0).RemoteHostIP '获得ClientIPDim 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
      

  2.   

    这里的SvrWinsock(0)专门用于监听,连接用其它成员连接,客户端IP可从SvrWinsock(0)得到