我正在为TCP编写套接字c++库。
我正在为TCP编写套接字c++库。
我在windows 10上用GCC编译x86_64-w64-mingw32.7.3.0。当我尝试建立一个套接字时,我失败了。
listenSocket = socket(AF_INET, SOCK_STREAM, 0);
if (listenSocket < 0) {
std::cout << "ERROR: OPEN SOCKET" << listenSocket << std::endl;
close(listenSocket);
return;
}
得到错误。
ERROR: OPEN SOCKET-1
似乎是一个非常基本的操作,我真的不明白为什么失败了。不幸的是,我没有其他信息来进一步调试它。
你有什么建议吗?提前谢谢你。
如果您在Windows中编写任何基于套接字的代码,您需要使用WSAStartup()
启动应用程序。如果没有,请将其添加到程序中。此外,您需要使用WSACleanup()
完成您的应用程序。这两个函数是windows特有的。
下面是一个小示例:
int main() {
WSADATA wsaData;
int err = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (err != 0)
return 1;
//...
WSACleanup();
}
这是WSAStartuo()
的MSDN页面。