【发布时间】:2012-03-09 08:12:06
【问题描述】:
我需要一个同时适用于 IP4 和 IP6 地址的函数,并且我需要将地址从它的字符串表示 (IP4) 或十六进制表示 (IP6) 转换为它的长值。我目前的代码是:
struct addrinfo *addr;
// This converts an char* ip_address to an addrinfo, so now I know whether
// it's a IP4 or IP6 address
int result = getaddrinfo(ip_address, NULL, NULL, &addr);
if (result ==0) {
struct in_addr dst;
result = inet_pton(addr->ai_family, ip_address, &dst);
long ip_value = dst->s_addr;
freeaddrinfo(addr);
return ip_value;
}
我确实从 dst->s_addr 得到了很长的信息,但我很确定这是不正确的。非常感谢任何有关如何解决此问题的指示!
【问题讨论】:
标签: c sockets ip ip-address