当参数addr没有分配ip地址

时间:2017-08-15 08:14:23

标签: linux sockets connect

示例代码如下:

int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(6666);
int len = sizeof(addr);
// connect but not assign the destination ip
int ret = connect(sockfd, (struct sockaddr*)&addr, len);
......

实际上,如果主机监听tcp端口6666,connect()在Linux中成功连接主机本身。

我的问题是在未分配目标IP的情况下定义connect()的行为。至少,我在手册中找不到定义。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

bzero(&addr, sizeof(addr));

addr.sin_addr.s_addr设置为0.0.0.0

0.0.0.0是有效的地址语法。因此,它应该在任何需要传统点分十进制表示法的IP地址时解析为有效。解析并转换为可操作的数字形式后,其值将决定接下来会发生什么。

您可以ping 0.0.0.0以查看发生了什么。