c++ - MinGW 中的套接字

标签 c++ mingw sockets msys

我只是尝试使用 MinGW 在 MSYS 中构建 netcat,并意识到 MinGW 从未真正将所有 BSD 套接字内容移植到 Windows(例如 sys/socket.h)。我知道你可以在 MinGW 中使用 Windows 套接字,但为什么他们从来没有为 BSD 套接字创建 Windows 端口?我注意到很多程序使用#ifdef 来解决这个问题。是否有可以替代使用的 BSD 套接字的 Windows 端口?

以下是在 MSYS 中为 netcat 进行 make 时的错误:


gcc -DLOCALEDIR=\"\/usr/local/share/locale\" -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall -c `test -f 'core.c' || echo './'`core.c
In file included from core.c:29:
netcat.h:38:24: sys/socket.h: No such file or directory
netcat.h:39:63: sys/uio.h: No such file or directory
netcat.h:41:24: netinet/in.h: No such file or directory
netcat.h:42:55: arpa/inet.h: No such file or directory

MinGW 没有#ifdef。有没有我可以添加到 MSYS 的库/包以使所有内容都可以无错误地编译?

注意:您可以下载netcat here并浏览 CVS 存储库 here

最佳答案

BSD sys/socket.h是 POSIX header ,win32 API 不支持它。 MinGW header 只是 native win32 header 的重新实现,不提供额外的 POSIX 兼容性。

如果您正在寻找 sys/socket.h 支持,请尝试使用 GNU gnulib 的 sys/socket.h replacement或使用 Cygwin ,它在 Windows 上提供了一个 POSIX 兼容性包装器。

关于c++ - MinGW 中的套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517762/

相关文章:

c++ - 通过系统变量设置QT基目录

c++ - 是否有调试器可以让我通过代码向后退一步?

c - mingw 获取光标位置(控制台)

tcp - 在通过套接字发送消息之前延迟 - 这有什么帮助?

Java Socket 未接收连接

Java nio服务端客户端异步

c++ - C/C++ : Reading and writing time stamp data to file with multi architecture support

c++ - 获取 cmake 可执行文件路径以在自定义命令上运行它

java - 从java程序调用C编译器

c++ - MATLAB MEX 成功完成但未创建 .mexw64 文件