windows相当于inet_aton

时间:2010-03-10 21:18:42

标签: c++ linux unix

我正在为Linux系统编写一些代码转换为Windows系统。我正在为我的Windows系统使用C ++,并希望知道函数inet_aton的等价物。

4 个答案:

答案 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)。它支持WSAStartup255.255.255.255。它不支持字段号小于4的IPv4地址字符串。如果0.0.0.0失败(例如,IPv4地址字符串的字段数小于4),则调用WSAStringToAddressA作为后备。