Windows XP 中是否有 inet_ntop / InetNtop 的替代方案?
我正在尝试编译beej的网络编程示例指南,但是Windows XP没有这样的功能。我正在使用 mingw,如果有什么区别的话。
I'm trying to compile beej's guide to network programming examples, but Windows XP doesn't have such a function. I'm using mingw, if it makes any difference.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
从 WinSock 层:
WSAddressToString
(ntop)WSAStringToAddress
(pton)From the WinSock layer:
WSAAddressToString
(ntop)WSAStringToAddress
(pton)如果您仅处理 IPv4 地址,则可以使用
inet_ntoa
。它可在 Windows 2000 或更高版本上使用。否则,您将必须需要 Vista 及更高版本,或者编写您自己的 inet_ntop 函数。您还可以查看 boost - boost::asio 有一个可在 Windows 中运行的
inet_ntop
实现:boost::asio::detail::socket_ops::inet_ntop
。您可以在此处查看源代码。If you're only dealing with IPv4 addresses, you can use
inet_ntoa
. It's available on Windows 2000 or later. Otherwise you'll have to either require Vista and later, or write your own inet_ntop function.You could also look at boost - the boost::asio has an
inet_ntop
implementation that works in Windows:boost::asio::detail::socket_ops::inet_ntop
. You can see the source code here.POSIX 兼容的 libc for Windows (PlibC) 库中还有
inet_ntop
函数创建用于将 POSIX 应用程序移植到 Windows。 在线文档中没有关于它的注释,但它存在于文件inet_ntop 中.c
至少自 2008 年起(根据文件日期)。There is also
inet_ntop
function in POSIX compliant libc for Windows (PlibC) library that was created for porting POSIX applications to Windows. There is no notes about it in online documentation, but it exists in fileinet_ntop.c
at least since 2008 (according to file date).您可能想使用 Jeroen Massar 此处,他的帖子摘录如下:
You might want to use something Jeroen Massar provided here, excerpt from his post follows:
您可以在Windows 7上将winsocket与mingw-64一起使用
,链接
目标:x86_64-w64-mingw32
线程模型:win32
海湾合作委员会版本 6.3.0 (GCC)
you can use winsocket with mingw-64 on windows 7
linkwith
Target: x86_64-w64-mingw32
Thread model: win32
gcc version 6.3.0 (GCC)
Xp Sp3中没有函数getnameinfo的头文件,因为它使用的是Vista最低的操作系统。我将其替换为以下方法,该方法仅适用于ipv4:
There is no header file for the function getnameinfo in Xp Sp3 because it uses the lowest operating system of Vista. I will replace it with the following method, which is only applicable to ipv4: