【发布时间】:2011-01-09 10:01:10
【问题描述】:
我一直在尝试以 C++ Unix 风格编写服务器,但我被困在 Windows 机器上。我从 MinGW 开始,但编译不正确,并告诉我找不到“sys/socket.h”文件。当然,这对于服务器甚至工作来说都是必要的。我去寻找它,我想某处说要安装 Cygwin,因为它带有很多库。好的,所以我安装了它。它可能提供给我的每一个图书馆。然后我又去编译了,还是找不到。我搜索了整个包含文件夹,但找不到该文件。所以我有点恼火(为了获得我不需要的额外功能而浪费了 3 个小时),但我继续搜索。我在任何地方都找不到它。我找到了多个使用它的参考资料,但我找不到任何地方下载它。过去几个小时我一直在寻找,我对所有事情都感到非常沮丧,因为没有提到我可以从哪里获得它(而且我不会使用winsock。如果我没记错的话,这会破坏兼容性)。
那么,长话短说,我在哪里可以下载 'socket.h'/'socket.c'/'socket.cpp' 文件?它会让我的生活(我相信许多其他人的生活)变得更轻松,我将非常感激!
【问题讨论】:
-
Cygwin 拥有大部分 POSIX 头文件,包括 sys/socket.h。奇怪的是你没有找到它。我的 Cygwin 安装肯定有它。
-
@Sergey,他可能直接安装了MinGW,没有通过Cygwin安装。
-
你需要吗? Windows 定义了一个几乎相同的 API,您可以使用它来代替。如果您需要跨平台可移植性,Boost.Asio 或 ACE 等库可能是更好的选择。
-
@Michael,他说“有人说要安装 Cygwin,因为它带有很多库。好的,所以我安装了它。”我无法想象如何在没有 sys/socket.h 的情况下安装 Cygwin。也许缺少一些开发包? Cygwin 对于为 Windows 编译原生 Unix 应用程序来说是一个非常好的东西,除非他们使用 fork(),这是有问题的,而且永远都是。
-
@jalf,说得好。或者也许是 Qt。它也有很好的套接字支持。无论如何,这些高级库比 Berkley 套接字 API 更易于使用。