所以我对sockets和C++还是个新手。我正在尝试在一台计算机上设置一个套接字,该套接字获取该计算机的IP地址,以便我可以从另一台计算机连接到该计算机。我正在设置IP地址和端口。然而,当涉及到绑定时,它总是失败。
因此,我将IP地址设置为我的计算机的IP地址,并设置了端口。
#define DEFAULT_PORT "8080"
#define DEFAULT_IP "165.120.216.66"
然后我调用WSAStartup,一切似乎都很顺利。然后解析服务器地址和端口。
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_IP;
hints.ai_flags = AI_PASSIVE;
然后是getaddrinfo并创建套接字。一切都很顺利
status = getaddrinfo(DEFAULT_IP, DEFAULT_PORT, &hints, &data);
MySocket = socket(data->ai_family, data->ai_socktype, data->ai_protocol);
然而,当涉及到绑定时,它总是失败,我就是不知道为什么。
status = bind(MySocket, data->ai_addr, (int)data->ai_addrlen);
另外,有没有方法可以获得运行它的机器的IP地址,而不是对IP进行编码?
发布于 2015-12-11 19:21:25
如果我没理解错的话,这应该是服务器端。因此,您希望能够从另一台计算机connect
到此套接字?然后,您不需要对特定地址执行bind
操作,之后应该开始使用listen
。例如:
status = getaddrinfo(NULL, DEFAULT_PORT, &hints, &data); // get data for the local address
MySocket = socket(data->ai_family, data->ai_socktype, data->ai_protocol);
bind(sockfd, res->ai_addr, res->ai_addrlen);
listen(sockfd, 10)
发布于 2015-12-11 19:08:20
只需将地址设置为INADDR_ANY:"0.0.0.0“。
https://stackoverflow.com/questions/34222042
复制相似问题