常常要将整数放进SOCKADDR 的变量后再导出,好麻烦又显得有点慢, 特求新法

解决方案 »

  1.   

    char* DottedDecimal()
    { return inet_ntoa(sockaddr); }
      

  2.   

    char* DottedDecimal(unsigned long ulAddr)
    {
        static char szAddr[16] = {0};
    unsigned long ulMask[4] = {0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000};
        for (int i = 0; i < 4; i++)
        {
    long l = (ulAddr & ulMask[i]) >> (i * 8);
    ltoa(l, szAddr + strlen(szAddr), 10);
    if (i != 3)
    strcat(szAddr, ".");
        }
    return szAddr;
    }
    注意,输入的无符号整数需要网络字节顺序,也就是需要用经过htonl转换的32位数。