如何获得Socket连接客户端的IP地址?
我想获得连接客户端的IP地址!但总没有值!CSocket sockSrvr;
sockSrvr.Create(800);
sockSrvr.Listen();
   
CSocket sockRecv;
sockSrvr.Accept(sockRecv);CString str;
unsigned int port;
pSocket->GetPeerName(str,port);
AfxMessageBox(str);
为什么str没有值??????如有好的其它的方法,请给出??代码要求全!!!!!

解决方案 »

  1.   

    accept 的时候不是返回一个socket ?里面不是有ip?
      

  2.   

    给你一个API的吧,不知道行不行
    WSADATA wsa;SOCKET listenFD;char Buff[1024];int ret; WSAStartup(MAKEWORD(2,2),&wsa); listenFD = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); struct sockaddr_in server; server.sin_family = AF_INET;server.sin_port = htons(53764);server.sin_addr.s_addr=ADDR_ANY;ret=bind(listenFD,(sockaddr *)&server,sizeof(server));ret=listen(listenFD,2);int iAddrSize = sizeof(server);SOCKET clientFD=accept(listenFD,(sockaddr *)&server,&iAddrSize);客户端的IP就在server结构体里面了
      

  3.   

    CSocket sockRecv;
    sockSrvr.Accept(sockRecv);
    CString str;
    unsigned int port;
    //pSocket->GetPeerName(str,port);
    sockRecv.GetPeerName(str,port);
    AfxMessageBox(str);
      

  4.   

    获取与套接字相连的端地址结构:
          int  getpeername(SOCKET s, struct sockaddr FAR * name, int FAR * namelen );
          s为套接字
          name为函数调用后获得的端地址值
          namelen为缓冲区的大小。