C++字符串转换为IP地址Windows/Unix系统

3

我能否在多个平台上(包括Windows的各个版本和Unix系统)将字符串转换为IP地址,使用的是C++语言?


你需要什么具体内容...你需要将一个字符串转换为按照 xxx.xxx.xxx.xxx 这种格式排列的字符串吗? - Kevin
不太清楚你具体想要什么。这个字符串是什么?一个主机名还是一个IP地址,或者其他什么? - Brian Neal
2个回答

4
您可以使用inet_addr()函数将以字符串表示的IP地址转换为可用于其他套接字函数的形式。
以下是一个示例用法(摘自此处):
int rc;
int s;
struct sockaddr_in myname;

/* clear the structure to be sure that the sin_zero field is clear */
memset(&myname, 0, sizeof(myname));
myname.sin_family = AF_INET;
myname.sin_addr = inet_addr("129.5.24.1");
/* specific interface */
myname.sin_port = htons(1024);

我必须编写适用于Windows和UNIX系统的代码。 在编写这段代码之前无法得知具体情况。如何修改这段代码呢? - Safari
在Windows和Unix系统上使用这段代码,我需要包含什么? - Safari
@GgSalent:在Windows和NIX上,头文件的包含方式不同。在Windows上,可能是<winsock2.h>,而在NIX上是<sys/socket.h>。您仍然可以使用预处理条件(如#ifdef __WIN32__)提供“可移植”的代码。 - ereOn
我做了这个,但是有很多错误.. 我包含了所有的东西吗?我现在使用的是Windows XP#ifdef WIN32 #include <windows.h> #include <winsock2.h> #else #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #endif - Safari
1
从记忆中,我记得你需要在windows.h之前包含winsock2.h。(另外,我认为winsock2.hwinsock.h是不兼容的,所以要小心!第一次尝试这些东西真的很痛苦。) - please delete me

0
如果你有一个主机名或完全限定域名(FQDN),并且你需要进行DNS查询或内部主机列表查询以将其转换为IP地址,那么你需要使用gethostbyname函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接