我正在尝试编写一些套接字,因此,在服务器端,我使用htonl(INADDR_ANY)
。据我所知,这个函数似乎会生成一个随机的IP (我说的对吗?)实际上,我想将我的套接字绑定到我的localhost
。但是如果我运行这个
printf("%d",htonl(INADDR_ANY));
我得到0作为返回值。有人能给我解释一下吗?
发布于 2013-05-12 23:17:49
当您不需要将套接字绑定到特定IP时,可以使用INADDR_ANY
。当您在调用bind()
时使用此值作为地址时,套接字将接受到计算机的所有IP的连接。
发布于 2018-05-11 13:52:03
INADDR_ANY
指示侦听套接字绑定到所有可用接口。这与尝试绑定到inet_addr("0.0.0.0")
是一样的。为了完整起见,我还会提到IPv6的IN6ADDR_ANY_INIT,它与尝试绑定到IPv6套接字的::
地址是一样的。
#include <netinet/in.h>
struct in6_addr addr = IN6ADDR_ANY_INIT;
还要注意,当您将IPv6套接字绑定到IN6ADDR_ANY_INIT
时,您的套接字将绑定到所有IPv6接口,并且应该能够接受来自IPv4客户端的连接(通过IPV6映射的地址)。
发布于 2017-07-12 15:53:37
INADDR_ANY是一个常量,它的值包含0。只有当你想从你不关心ip-add的所有活动端口连接时,才会用到这一点。因此,如果您想要连接任何特定ip,您应该像这样提到my_sockaddress.sin_addr.s_addr = inet_addr("192.168.78.2")
https://stackoverflow.com/questions/16508685
复制相似问题