我正在将为Linux系统编写的一些代码转换为Windows系统。 我在我的Windows系统中使用C ++,想知道函数inet_aton的等效函数。
Windows支持inet_pton
,其接口类似于inet_aton
(但支持IPv6地址)。只需将AF_INET
作为第一个参数提供,它就能像inet_aton
一样工作。
(如果您可以更改Linux源代码,则inet_pton
也可以在那里使用)。
这里提到的不是C++中的函数,而是Windows系统中的函数。你可能需要使用inet_addr
函数,它比inet_aton
早被引入,并且在Windows系统中也得到了支持。
http://msdn.microsoft.com/en-us/library/ms738563.aspx
在这篇文章的“相关内容”部分中,还列出了一整套用于处理IPv6地址等的详细命名函数。
#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
WSAStringToAddressA
代替(还需要使用WSAStartup
)。它支持255.255.255.255
和0.0.0.0
。它不支持IPv4地址字符串中字段数少于4的情况。如果WSAStringToAddressA
失败(例如IPv4地址字符串的字段数少于4),则调用inet_addr
作为备选方案。