私は、ネットワーク上で実行されているSLPサービスtestを見つけるためにJavaを使用しようとしています。私はサービスが動作していることを知っており、それを見つけるために "slptool findsrvs service:test"コマンドを使うことができます。このコマンドは、 "service:test://192.168.1.4:12345,65535"を返します。ただし、次のコード:IP_MULTICAST_IFによるSocketExceptionを引き起こすSLP Java関数
import java.util.Locale;
import ch.ethz.iks.slp.*;
public class OpenConnection {
public static void main(String[] args) throws ServiceLocationException {
Locator locator = ServiceLocationManager.getLocator(new Locale("en"));
ServiceLocationEnumeration sle = locator.findServices(new ServiceType("service:test"), null, null);
System.out.println("Looking up ...");
System.out.println(sle.nextElement());
while (sle.hasMoreElements()) {
ServiceURL foundService = (ServiceURL) sle.nextElement();
System.out.println(foundService);
}
System.out.println("Finished.");
}
}
は、次の出力を生成します。
java.net.SocketException: bad argument for IP_MULTICAST_IF: address not bound to any interface
at java.net.PlainDatagramSocketImpl.socketSetOption(Native Method)
at java.net.AbstractPlainDatagramSocketImpl.setOption(AbstractPlainDatagramSocketImpl.java:299)
at java.net.MulticastSocket.setInterface(MulticastSocket.java:448)
at ch.ethz.iks.slp.impl.SLPCore.<clinit>(SLPCore.java:279)
at OpenConnection.main(OpenConnection.java:7)
Looking up ...
null
Finished.
私はロケータの故障による声明は、ルックアップ)(nullが印刷sle.nextElementのために印刷されたと仮定しています7行目で:
Locator locator = ServiceLocationManager.getLocator(new Locale("en"));
だから私の質問は、IP_MULTICAST_IFに悪い引数はこれを引き起こす可能性があるし、それを修正する方法を、なぜ誰もが知っているんでしょうか?誰かがIP_MULTICAST_IF以外の問題を引き起こす可能性のあるものを見た場合は、気をつけてください。
私は、JavaSE-1.6、jslp-0.7.1、およびcommons-loggin-1.1.1ライブラリをUbuntu 11.04で使用していることを知っておけば、