C++ 相当于 inet_aton 的 windows

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/2420663/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 23:26:23  来源:igfitidea点击:

windows equivalent of inet_aton

c++linuxunix

提问by SSS

I'm converting some code written for a linux system to a windows system. I'm using C++ for my windows system and wanted to know the equivalent of the function inet_aton.

我正在将一些为 linux 系统编写的代码转换为 windows 系统。我在我的 Windows 系统中使用 C++,并想知道函数 inet_aton 的等价物。

回答by Steve Jessop

It's the Windows equivalent rather than the C++ equivalent, but probably you want inet_addr, which I believe predates inet_atonand which Windows supports.

它是 Windows 的等价物,而不是 C++ 的等价物,但可能你想要inet_addr,我相信它早于inet_atonWindows 支持。

http://msdn.microsoft.com/en-us/library/ms738563.aspx

http://msdn.microsoft.com/en-us/library/ms738563.aspx

That article also lists, in the "see also" section, the full set of verbosely-named functions to handle IPv6 addresses and so on.

该文章还在“另见”部分列出了处理 IPv6 地址等的完整的详细命名函数集。

回答by caf

Windows supports inet_pton, which has a similar interface to inet_aton(but that works with IPV6 addresses too). Just supply AF_INETas the first parameter, and it will otherwise work like inet_aton.

Windows 支持inet_pton,它具有与inet_aton(但也适用于 IPV6 地址)类似的界面。只需AF_INET作为第一个参数提供,否则它将像inet_aton.

(If you can change the Linux source, inet_ptonwill also work there).

(如果可以更改Linux 源,inet_pton也可以在那里工作)。

回答by benziv

To run in windows XP, you can try this checking:

要在 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