я читаю содержимое файла / 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 является массивом, а не единственным журналом без знака int (например, sin_addr.s_addr)
так что в резюме. я пытаюсь передать это
0000000000000000FFFF00001F00C80A
что-то вроде
::ffff:10.200.0.31
редактирование ..
ммм, может быть, если я разложу этот ex на 16 экс-цифр и передам массив в sin6_addr.s_addr.
Потому что 1F00C80A = 10.200.0.31 (через функцию ntop)