尝试为套接字c ++

时间:2015-12-11 11:05:10

标签: c++ 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?

2 个答案:

答案 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”。