我需要将unsigned long remoteIp = ntohl (RecvAddr.sin_addr.s_addr);形势的IP地址 转化为CString 形势!! 怎么做!!代码是什么

解决方案 »

  1.   

    CString LocalHostAddress()
    {
    char hostname[128];
    char Address[20];
    if (gethostname(hostname, sizeof(hostname)) != SOCKET_ERROR)
    {
    HOSTENT *Hostent;
    Hostent = gethostbyname(hostname);
    if (Hostent != NULL)
    {
    int j;
    int i =0;
    memset(Address, 0, sizeof(Address));
    for (j=0; j<4; j++)
    {
    sprintf(Address, "%s%d.",Address, (unsigned int)((unsigned char*)Hostent->h_addr_list[i])[j]);
    }
    }
    }
    CString Ips = Address;
    CString Re = Ips.Left(strlen(Ips)-1);     
    return Re;
    }
      

  2.   

    不是吧 太长了!! 有没有一个函数就能转化过来的!! 我在一个流量很大的线程转化!!需要的是速度!!我的remoteIp 已经有了 就是把它转换会去  inet_ntoa用它能行吗!!怎么做
      

  3.   

    可以
    in_addr addr;
    addr.S_un.S_addr = remoteIp;
             CString strIP = inet_ntoa(addr);
      

  4.   

    你用ntohl()或htons()试一下,我以前也遇到过这种问题,不过最后是通过网络字节顺序和主机字节顺序改正的,印象(好长时间不用了)中就是上边两个函数中的一个
      

  5.   

    ntohl()是网络地址到主机地址,htons()是主机地址到网络地址