【发布时间】:2012-12-25 17:02:33
【问题描述】:
如何从 IPv4 映射的 IPv6 地址中获取 IPv4 地址?
例如,我有一个 IP 地址::FFFF:129.144.52.38。从中,我需要提取129.144.52.38。有没有用于此目的的 API?
我可以使用以下函数识别 IPv6 或 IPv4 地址族
int getaddrfamily(const char *addr)
{
struct addrinfo hint, *info =0;
memset(&hint, 0, sizeof(hint));
hint.ai_family = AF_UNSPEC;
// Uncomment this to disable DNS lookup
//hint.ai_flags = AI_NUMERICHOST;
int ret = getaddrinfo(addr, 0, &hint, &info);
if (ret)
return -1;
int result = info->ai_family;
freeaddrinfo(info);
return result;
}
如果我提供一个 IPv4 映射的 IPv6 地址,那么如何识别它是否是一个映射地址?是否有任何套接字 API 可以从映射的 IPv6 地址中提取 IPv4?
【问题讨论】:
-
这个问题可能很有趣:stackoverflow.com/q/13949750/175849
标签: c++ c sockets networking network-programming