示例代码如下:
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()
的行为。至少,我在手册中找不到定义。
有人可以帮忙吗?
答案 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
以查看发生了什么。