ファイル/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 16 進文字)、おそらく sockaddr_in6 を使用する必要がありますが、変数 sin6_addr.s6_addr は配列であり、単一のログ符号なし int (sin_addr.s_addr など) ではありません。
だから履歴書に。私はこれを通過しようとしています
0000000000000000FFFF00001F00C80A
のようなものに
::ffff:10.200.0.31
編集..
うーん、ex を 16 桁の ex に分解し、sin6_addr.s_addr の配列にフィードすると、おそらくそうなるでしょう。1F00C80A = 10.200.0.31 (ntop 関数を通過)