GNU/Linux >> Linux の 問題 >  >> Linux

Linux で ioctl を使用して IPv6 アドレスを取得する

<ブロック引用>

ioctl を使用して Linux で IPv6 アドレスを取得する

これはおそらくうまくいきません。

man 7 netdevice から :

<ブロック引用>

SIOCGIFCONF

インターフェイス (トランスポート層) アドレスのリストを返します。これは現在、AF_INET のアドレスのみを意味します (IPv4) ファミリとの互換性。

[...]

注意

[...]

ローカル IPv6 IP アドレスは、/proc/net または viartnetlink(7) で見つけることができます。


はい、その ioctl はレガシーであり、IPv6 を返しません。プラットフォームごとに、IPv6 を取得する方法が異なります:

  • Linux、頭がおかしいなら NETLINK を使って、getifaddrs を使って 漠然と最近の glibc をお持ちの場合、それ以外の場合は /proc/net/if_inet6 をお読みください (例:Android)
  • Darwin または FreeBSD:getifaddrs を使用 .
  • Solaris、SIOCGLIFCONF を使用 .
  • AIX、SIOCGIFCONF を使用 実際にIPv4およびIPv6アドレスを返します(sa_lenがあるため) struct sockaddr のフィールド 彼らは実際にそれをサポートできます)。

Linux
  1. C++ を使用して Linux で合計 CPU 使用率を取得する方法

  2. Python を使用してマウス デルタを取得します。 (Linux の場合)

  3. javaを使用してLinuxマシンでユーザーのUIDを取得する方法はありますか?

  1. proc のみを使用してローカル ネットワーク インターフェイス アドレスを取得しますか?

  2. Linuxでマイクを使用して生の形式で音声を取得する方法

  3. Cを使用してLinuxでユーザーのグループを取得する適切な方法

  1. ProcDumpを使用してLinuxをデバッグする

  2. Linuxファイアウォールを使用してローカルのなりすましアドレスをブロックする方法

  3. bash を使用して Linux でサブネット マスクを取得する