从哪里获取“sys/socket.h”头文件/源文件?

2024-03-31

我一直在尝试用 C++ Unix 风格编写服务器,但我被困在 Windows 机器上。我从 MinGW 开始,但它编译不正确,并告诉我它找不到“sys/socket.h”文件。当然,这是服务器正常工作所必需的。我去寻找它,我想某个地方说要安装 Cygwin,因为它附带了很多库。好的,所以我安装了它。它可能为我提供的每一个图书馆。然后我又去编译了,还是找不到。我搜索了整个包含文件夹,但找不到该文件。所以我有点恼火(为了我不需要的额外功能浪费了 3 个小时),但我继续搜索。我到处都找不到它。我找到了多个使用它的参考,但我找不到任何地方可以下载它。我在过去的几个小时里一直在寻找,我对一切都感到非常沮丧,因为没有提到我可以在哪里获得它(而且我不会使用winsock。如果我没记错的话,这会破坏兼容性)。

那么,长话短说,在哪里可以下载“socket.h”/“socket.c”/“socket.cpp”文件?这将使我的生活(我相信许多其他人的生活)变得更加轻松,我真的很感激!


鉴于 Windows 没有 sys/socket.h,您可能会考虑这样做:

#ifdef __WIN32__
# include <winsock2.h>
#else
# include <sys/socket.h>
#endif

我知道您表示不会使用 WinSock,但由于 WinSock 是 Windows 下 TCP 网络的实现方式,因此我认为您没有任何其他选择。即使您使用跨平台网络库,该库也会在内部调用 WinSock。大多数标准 BSD 套接字 API 调用都是在 WinSock 中实现的,因此只需稍加努力,您就可以在 Windows 和其他操作系统下编译相同的基于套接字的程序。只是不要忘记做一个

#ifdef __WIN32__
   WORD versionWanted = MAKEWORD(1, 1);
   WSADATA wsaData;
   WSAStartup(versionWanted, &wsaData);
#endif

在 main() 的顶部...否则在 Windows 下所有套接字调用都将失败,因为 WSA 子系统没有为您的进程初始化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从哪里获取“sys/socket.h”头文件/源文件? 的相关文章

随机推荐