我正在为Linux系统编写一些代码转换为Windows系统。我正在为我的Windows系统使用C ++,并希望知道函数inet_aton的等价物。
答案 0 :(得分:11)
它是Windows的等价物,而不是C ++的等价物,但可能你想要inet_addr
,我相信它早于inet_aton
和Windows支持。
http://msdn.microsoft.com/en-us/library/ms738563.aspx
该文章还在“另见”部分列出了处理IPv6地址的全套详细命名函数等。
答案 1 :(得分:9)
Windows支持inet_pton
,它具有与inet_aton
类似的接口(但也适用于IPV6地址)。只需提供AF_INET
作为第一个参数,否则它将像inet_aton
一样工作。
(如果您可以更改Linux源代码,inet_pton
也可以在那里工作)。
答案 2 :(得分:1)
要在Windows XP中运行,您可以尝试以下检查:
#pragma comment(lib, "Ws2_32.lib")
sockaddr_in inaddr;
#ifdef _WIN32_WINNT 0x0501
inaddr.sin_addr.s_addr =inet_addr("10.10.10.10"); //for XP
#else
inet_pton(AF_INET, "10.10.10.10", &inaddr.sin_addr.s_addr); //for Vista or higher
#endif
答案 3 :(得分:0)
考虑在Windows XP上使用React Navigation
代替(也需要WSAStringToAddressA
)。它支持WSAStartup
和255.255.255.255
。它不支持字段号小于4的IPv4地址字符串。如果0.0.0.0
失败(例如,IPv4地址字符串的字段数小于4),则调用WSAStringToAddressA
作为后备。