我正在尝试编写一些套接字,因此,在服务器端,我使用 htonl(INADDR_ANY)
。在我理解的范围内,在我看来这个函数会生成一个随机 IP(我说得对吗?)。事实上,我想用我的 localhost
绑定(bind)我的套接字。但是如果我运行这个
printf("%d",htonl(INADDR_ANY));
我得到 0 作为返回值。有人可以带来一些解释吗?
最佳答案
bind()
of INADDR_ANY
NOT “随机生成IP它 binds the socket to all available interfaces 。 my_sockaddress.sin_addr.s_addr = inet_addr("127.0.0.1");
,然后调用 bind(my_socket, (SOCKADDR *) &my_sockaddr, ...)
。 INADDR_ANY
是一个恰好等于“零”的常数:http://www.castaglia.org/proftpd/doc/devel-guide/src/include/inet.h.html
# define INADDR_ANY ((unsigned long int) 0x00000000)
...
# define INADDR_NONE 0xffffffff
...
# define INPORT_ANY 0
...
http://beej.us/guide/bgnet/
由于人们仍在阅读本文,因此请补充说明:
还:
关于c - 理解 INADDR_ANY 进行套接字编程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16508685/