在socket编程中,怎么把getpeername得到sockaddr转化为字符型的ip和数字的端口?
望大侠解决。

解决方案 »

  1.   

    //先用ntohl()函数转换一下IP
    string CConfig::GetIPStr()
    {
    unsigned long& ip = m_iSocketAddress;
    string str = Int2Str((ip>>24)&0xff)+"."+Int2Str((ip>>16)&0xff)+"."
    +Int2Str((ip>>8)&0xff)+"."+Int2Str(ip&0xff) + ":" + Int2Str(m_iSocketPort);
    return str;
    }
      

  2.   

    wsd = accept(sd,&(work.s),&addlen);
    peerlen = sizeof(struct sockaddr);
    getpeername(wsd,&(peer.s),&peerlen);

    printf("Connection from %s",inet_ntoa(peer.i.sin_addr));
      

  3.   

    我不明白masterz的意思,struct sockaddr没有s或者i这种成员变量吧?
    第一种方法看不懂,不过我会试的。
      

  4.   

    我WinSock2版本中找到一个函数
    WSAddressToString,可以直接转换,真是谢天谢地!