所以我对套接字和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?
答案 0 :(得分:1)
如果我理解正确,这将是服务器端。所以你希望能够从另一台机器connect
到这个套接字?
然后,您不需要bind
到特定地址,之后应该开始listen
。 E.g:
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)
答案 1 :(得分:0)
只需将地址设置为INADDR_ANY:“0.0.0.0”。