以下是一个使用inet_ntop函数将IPv4和IPv6地址转换为字符串表示形式的示例:
#include <stdio.h>
#include <arpa/inet.h>
int main() {
char ipv4_addr[INET_ADDRSTRLEN];
char ipv6_addr[INET6_ADDRSTRLEN];
// Convert IPv4 address to string
struct in_addr ipv4;
inet_pton(AF_INET, "192.168.0.1", &ipv4);
inet_ntop(AF_INET, &ipv4, ipv4_addr, INET_ADDRSTRLEN);
printf("IPv4 address: %s\n", ipv4_addr);
// Convert IPv6 address to string
struct in6_addr ipv6;
inet_pton(AF_INET6, "2001:db8::1", &ipv6);
inet_ntop(AF_INET6, &ipv6, ipv6_addr, INET6_ADDRSTRLEN);
printf("IPv6 address: %s\n", ipv6_addr);
return 0;
}
在这个例子中,我们首先声明了两个缓冲区变量来存储转换后的IP地址字符串。接下来,我们使用inet_pton函数将“192.168.0.1”(对于IPv4)和“2001:db8::1”(对于IPv6)的二进制地址转换为网络字节序,并将其存储在in_addr或in6_addr结构体中。最后,我们使用inet_ntop函数将这些结构体转换为字符串格式,并打印出结果。
输出结果应该类似于:
IPv4 address: 192.168.0.1
IPv6 address: 2001:db8::1