0

こんにちは、事前に助けてくれてありがとう:

このよく知られ、議論されている問題を見ています。ただし、これはEclipse、Win 7 の Juno で実行/デバッグする場合のみです。VM のバージョンは関係ありません。

したがって、これは Eclipse のみの問題です。これは、同じアプリをスタンドアロンで実行した場合には発生しません-Eclipse内でのみ(私はすでに言いました;-))

これは、(テスト目的で) ネットワーク アダプターで IPv6 を無効にしてから、同じアダプターで IPv6 を有効にした後に発生しました。

アプリケーションは単純です。WS-Discovery ポートにマルチキャスト サーバーを作成し、そのグループへの UDP マルチキャストをリッスンしてレポートします。このプログラムは、上記のようにIPv6を無効/有効にしたマシンとEclipseを除いて、すべてのケースとプラットフォームで正常に動作します。

また: 1) はい、PreferIPv6Addresses = true および PreferIPv4Stack = false - コードで設定された引数 2) いいえ、Win 7 ホスト ファイルはめちゃくちゃではありません 3) いいえ、これは Android アプリではありません

エラーの後にコードが続きます。

改めまして、よろしくお願いいたします。

トム

Protocol family not supported
java.net.SocketException: Protocol family not supported
    at java.net.PlainDatagramSocketImpl.bind(Native Method)
    at java.net.DatagramSocket.bind(DatagramSocket.java:368)
    at java.net.MulticastSocket.<init>(MulticastSocket.java:147)


System.setProperty("java.net.preferIPv4Stack", "false");
System.setProperty("java.net.preferIPv6Addresses", "true");

// bind to all IPv6 ports (in contrast to "0.0.0.0" for IPv4 binding)
InetAddress ia6BindTo = InetAddress.getByName("::");
SocketAddress sa = new InetSocketAddress(ia6BindTo, 3702);

// bam
MulticastSocket ms = new MulticastSocket(sa);

// no longer gets this far since disable/enable IPv6 on net adapters
InetAddress m_GroupAddress = InetAddress.getByName("[FF02::C]");
ms.joinGroup(m_GroupAddress);
4

1 に答える 1

0

これは「なぜ?」という答えではありません。

これが回避策の答えです。

インストール済みの JVM を Eclipse から削除し、再インストールしました。動作がクリアされました。

これは、次の 2 つの理由から、私には完全には受け入れられません。

1) IPv6 を再度無効/有効にすると、問題が繰り返されます。したがって、回避策を繰り返す必要があります。2) プロジェクトを構成し、さらに構成を実行して、目的の JVM をデフォルトに戻す必要があります。

これが Eclipse で発生している理由がわかったら、調査結果を投稿します。

于 2013-01-07T19:42:28.063 に答える