繁体   English   中英

为什么 socket(AF_INET, SOCK_STREAM, 0) 返回 -1?

[英]Why socket(AF_INET, SOCK_STREAM, 0) return -1?


我正在为 TCP 编写套接字 C++ 库。
我正在 Windows 10 上为 x86_64-w64-mingw32.7.3.0 使用 GCC 进行编译。

当我尝试构建一个套接字时,我失败了。

 listenSocket = socket(AF_INET, SOCK_STREAM, 0); if (listenSocket < 0) { std::cout << "ERROR: OPEN SOCKET" << listenSocket << std::endl; close(listenSocket); return; }

得到错误。

错误:打开 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页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM