WinSock没有明显原因返回SOCKET_ERROR

时间:2017-01-16 18:12:41

标签: c++ winsock2

我正在使用WINSOCK学习基本的网络编程。服务器构建并执行得很好,除了它没有通过bind()返回SOCKET_ERROR。

输出:"错误:SOCKET_ERROR(-1)"

代码:

.carousel-item.active,
.carousel-item-next,
.carousel-item-prev {
  display: block;
}

1 个答案:

答案 0 :(得分:2)

inet_pton(AF_INET, IP.c_str(), &(IncomingClient));

inet_pton预计会提供IN_ADDR,而不是SOCKADDR_INSOCKADDR_IN包含IN_ADDR,因此OP需要稍微改变调用以提供指向sin_addr成员的指针:

inet_pton(AF_INET, IP.c_str(), &(IncomingClient.sin_addr));

然后他们需要解决一些其他问题,例如return true;末尾缺少ListenForConnection,错位的括号

                                                                         This bracket here V
if (bind(NewConnection, (LPSOCKADDR)&IncomingClient, sizeof(IncomingClient) == SOCKET_ERROR))
                                                            should be here ^

而不检查

的返回码
listen(NewConnection, SOMAXCONN);

他们应该好好去。