小编Rai*_*kis的帖子

getaddrinfo和INADDR_ANY

花了几个小时搜索,仍然感到困惑。从我发现的结果来看,INADDR_ANY旨在指定套接字将接受具有分配给服务器的任何地址的连接。但是,以下结果导致客户端只能localhost:7777从同一台计算机连接到。

addrinfo hints;
addrinfo* result;
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags = AI_PASSIVE;
getaddrinfo(INADDR_ANY, "7777", &hints, &result);

SOCKET listenSocket = INVALID_SOCKET;
listenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);

bind(listenSocket, result->ai_addr, (int)result->ai_addrlen);
Run Code Online (Sandbox Code Playgroud)

我发现的唯一解决方案是将INADDR_ANY更改为计算机的本地IP:

getaddrinfo("192.168.0.105", "7777", &hints, &result);
Run Code Online (Sandbox Code Playgroud)

我需要了解INADDR_ANY的工作原理,因为我觉得自己只是在以某种方式滥用它。任何帮助,将不胜感激。

c sockets windows tcp getaddrinfo

2
推荐指数
1
解决办法
1867
查看次数

标签 统计

c ×1

getaddrinfo ×1

sockets ×1

tcp ×1

windows ×1