2

method を呼び出すとNetworkInterface.getInetAddresses()、次の文字列が得られます。

"fe80:0:0:0:f06c:31b8:cd17:5a44%5"

ここで何%5を意味するのだろうか?これなしでIPv6アドレスを取得することは可能%5ですか?

4

3 に答える 3

6

ここで説明します:

Inet6Adress - フォーマット

scope_idを指定する一般的な形式は次のとおりです。

*IPv6-address%scope_id*

IPv6-address は、上で説明した文字通りの IPv6 アドレスです。scope_idは、ローカル システム上のインターフェイスを参照し、2 つの方法で指定できます。

  1. 数値識別子として。これは、システムが認識する特定のインターフェイスとスコープを識別する正の整数である必要があります。通常、数値はシステムの管理ツールを使用して決定できます。各インターフェイスには、スコープごとに 1 つずつ、複数の値がある場合があります。スコープが指定されていない場合、使用されるデフォルト値はゼロです。

  2. 文字列として。これは、問題の特定のインターフェースに対してNetworkInterface.getName()によって返される正確な文字列でなければなりません。この方法で Inet6Address が作成されると、数値のスコープ ID は、関連する NetworkInterface を照会することによってオブジェクトが作成されるときに決定されます。

また、数値のscope_idは NetworkInterface クラスから返された Inet6Address インスタンスから取得できることにも注意してください。これは、システムで構成されている現在のスコープ ID を見つけるために使用できます。

于 2013-01-28T19:53:05.750 に答える
2

5 はゾーン インデックスです。% を使用して区切ります。

Windows マシンには %1 のようなものがあります。

Unix マシンには、%eth0 などがあります。インターフェイス名をゾーン インデックスとして使用します。

于 2013-01-28T19:50:54.267 に答える