我正在做一个聊天室程序,用CSocket创建的套接字,接到客户端的请求后建立连接,想从那个会话的套接字中取出IP,不知道该怎么取?

解决方案 »

  1.   

    在监听的SOCKET的ACCEPT(int nErrorCode)函数内加入如下代码: struct UnionSockAddr {
    union {
    SOCKADDR SockAddr;
    SOCKADDR_IN SockAddrIn;
    } Union;
    } UnionSockAddr;
    UnionSockAddr.Union.SockAddr = SockAddr;
    sin_port = UnionSockAddr.Union.SockAddrIn.sin_port;
    unsigned char s_b1, s_b2, s_b3, s_b4;
    s_b1 = UnionSockAddr.Union.SockAddrIn.sin_addr.S_un.S_un_b.s_b1;
    s_b2 = UnionSockAddr.Union.SockAddrIn.sin_addr.S_un.S_un_b.s_b2;
    s_b3 = UnionSockAddr.Union.SockAddrIn.sin_addr.S_un.S_un_b.s_b3;
    s_b4 = UnionSockAddr.Union.SockAddrIn.sin_addr.S_un.S_un_b.s_b4; CString StrClientAddr;
    StrClientAddr.Format("%d.%d.%d.%d", s_b1, s_b2, s_b3, s_b4);
    return StrClientAddr;
    StrClientAddr即是你需要的IP
      

  2.   

    virtual BOOL Accept( CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL );
    这个函数里面有
      

  3.   

    本帖最后由 VisualEleven 于 2010-12-25 21:19:37 编辑