我正在读取文件 /proc/net/tcp6 的内容
并试图将 ip6 的符号转换为 '0::1' 之类的
以前使用 ipv4 y 使用下一个方法。
struct sockaddr_in tmp_ip;
char ip_str[30];
char ipex[]='00000AF0'; /*read from the file /proc/net/tcp */
tmp_ip.sin_addr.s_addr=(int)strtoll(ipex,NULL,16);
inet_ntop(AF_INET,&tmp_ip.sin_addr,ip_str,60);
printf("ip=%s \n",ip_str);
但是对于 ipv6,/proc/net/tcp6 的内容更大(33 个十六进制字符),也许我需要使用 sockaddr_in6,但变量 sin6_addr.s6_addr 是一个数组,而不是单个 log unsigned int(如 sin_addr.s_addr)
所以在简历中。我试图通过这个
0000000000000000FFFF00001F00C80A
类似于
::ffff:10.200.0.31
编辑..
嗯,也许如果我将 ex 分解成 16 个 ex 数字并将数组输入 sin6_addr.s_addr。因为 1F00C80A = 10.200.0.31(通过 ntop 函数)