linux网络编程-地址转换
linux网络编程-常用IP地址转换
代码分析 client.c
程序分析client.c
//Example Program source of inet_pton
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
unsigned char buf[sizeof(struct in6_addr)];
int domain, s;
char str[INET6_ADDRSTRLEN];
if (argc != 3)
{
fprintf(stderr, "Usage: %s {i4|i6|<num>} string\n", argv[0]);
exit(EXIT_FAILURE);
}
domain = (strcmp(argv[1], "i4") == 0) ? AF_INET :
(strcmp(argv[1], "i6") == 0) ? AF_INET6 : atoi(argv[1]);
//参数1表面即将读取的参数2是IPv4,还是IPv6。以便进行转化
s = inet_pton(domain, argv[2], buf);
if (s <= 0)
{
if (s == 0)
{
fprintf(stderr, "Not in presentation format");
}
else
{
perror("inet_pton");
}
exit(EXIT_FAILURE);
}
if (domain == AF_INET)
{
printf("Binary address %X\n", ntohl(((struct in_addr *)buf)->s_addr));
}
if (domain == AF_INET6)
{
int i;
printf("Binary address ");
for (i = 0; i<sizeof(struct in6_addr); i++)
{
printf("%X", ((struct in6_addr *)buf)->s6_addr[i]);
}
printf("\n");
}
if (inet_ntop(domain, buf, str, INET6_ADDRSTRLEN) == NULL)
{
perror("inet_ntop");
exit(EXIT_FAILURE);
}
printf("%s\n", str);
exit(EXIT_SUCCESS);
}
执行结果
可以看到转换成功
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不听话的兔子君!