2014-11-05 89 views
0

我正在以这种方式将终端连接到服务器上读取地址,但我被告知这是不正确的,因为我应该通过inet_pton函数进行转换。这是真的?你能解释我为什么吗? 我正在使用127.0.0.1进行测试,并且这段代码似乎都能正常工作。地址是程序名后的第一个参数...套接字 - 从终端读取IP地址

int main(int argc, char *argv[]){ 
    struct sockaddr_in Eaddr; 
    Eaddr.sin_addr.s_addr=inet_addr(argv[1]); 
    //other code to connect... 
} 

回答

0

的问题inet_addr是,它指示错误返回INADDR_NONE,其IP地址为255.255.255.255一致。 inet_pton函数具有更好的错误报告:成功时返回1,错误时返回0或-1。

0

inet_addr() man page

The inet_addr() function converts the Internet host address cp from 
    IPv4 numbers-and-dots notation into binary data in network byte 
    order. If the input is invalid, INADDR_NONE (usually -1) is 
    returned. Use of this function is problematic because -1 is a valid 
    address (255.255.255.255). Avoid its use in favor of inet_aton(), 
    inet_pton(3), or getaddrinfo(3), which provide a cleaner way to 
    indicate error return.