2011-07-28 5 views
2

Java를 사용하여 네트워크에서 실행중인 테스트라는 SLP 서비스를 찾고 연결을 생성하려고합니다. 서비스가 실행 중이고 "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. 

내가 널 있으리라 믿고있어 인한 로케이터의 실패에 인쇄 sle.nextElement() 문 인쇄됩니다 찾아 라인 7 :

Locator locator = ServiceLocationManager.getLocator(new Locale("en")); 

은 IP_MULTICAST_IF에 대한 나쁜 인수가이 발생할 수 이유 그래서 제 질문은 아는 사람 있나요이며 어떻게 그것을 해결하기 위해? 누군가가 IP_MULTICAST_IF 이외의 문제를 일으킬 수있는 것을 보게되면 언제든지 지적 해주십시오.

우분투 11.04에서 JavaSE-1.6, jslp-0.7.1 및 commons-loggin-1.1.1 라이브러리를 사용하고 있다는 것을 알면 도움이 될 것입니다.

답변

3

방금 ​​같은 문제가 발생했습니다. 나를 위해 고쳐진 점은 시작시에

System.setPropery("java.net.preferIPv4Stack", "true") 

이며 다음 인수를 java cmd line에 추가하여 수행 할 수도 있습니다.

-Djava.net.preferIPv4Stack=true 
관련 문제