2011-09-16 7 views
0

한 가지 방법은 다음과 같습니다수신자 측에서 JmDNS 서비스의 속성을 보는 방법은 무엇입니까? JmDNS 서비스를 만드는

소품 서비스의 일부 propeties를 설명하는지도입니다
ServiceInfo.create(type, name, port, weight, priority, props); 

. 누구나 theese 속성의 사용을 보여주는 예제가 있습니다 (예 :받는 사람 파트에서 사용하는 방법). 나는 이러한 속성을 참조하기 위해 무엇을 할 수 있습니다,이 서비스를받는 기계,

Hashtable<String,String> settings = new Hashtable<String,String>(); 
settings.put("host", "hhgh"); 
settings.put("web_port", "hdhr"); 
settings.put("secure_web_port", "dfhdyhdh"); 
ServiceInfo info = ServiceInfo.create("_workstation._tcp.local.", "service6", 80, 0, 0, true, settings); 

을하지만 : 나는 시도했다? 이이 요청하지만 같은 질문을했다 이후 그것은 잠시왔다

답변

0

내가 어떤 도움을 뵙죠 것

.... 원래 질문에 대한 한 가지 문제점은 호스트와 포트를 텍스트 필드에 넣으면 안되며,이 경우에는 실제로 보안과 안전하지 않은 두 가지 서비스 유형이 있어야합니다 (또는 아마도 하위 유형을 사용하는 것입니다). 천천히 (몇 초) 주어진 유형에) 때문에 JmDNS 목록 (첫 번째 호출을 구현하는 방식에

ServiceInfo[] serviceInfoList = jmdns.list("_workstation._tcp.local."); 
if(serviceInfoList != null) { 
    for (int index = 0; index < serviceInfoList.length; index++) { 
    int port = serviceInfoList[index].getPort(); 
    int priority = serviceInfoList[index].getPriority(); 
    int weight = serviceInfoList[index].getWeight(); 
    InetAddress address = serviceInfoList[index].getInetAddresses()[0]; 
    String someProperty = serviceInfoList[index].getPropertyString("someproperty"); 

    // Build a UI or use some logic to decide if this service provider is the 
    // one you want to use based on prority, properties, etc. 
    ... 
    } 
} 

됩니다 : 여기

실행 워크 스테이션 서비스의 목록을 가져옵니다 불완전 예입니다 후속 호출은 꽤 빠를 것입니다. 서비스 공급자는 info.setText (설정)를 호출하여 속성을 변경할 수 있으며 변경 내용은 자동으로 리스너에 전달됩니다.

0
ServiceInfo info = jmDNS.getServiceInfo(serviceEvent.getType(), serviceEvent.getName()); 

Enumeration<String> ps = info.getPropertyNames(); 

while (ps.hasMoreElements()) { 
    String key = ps.nextElement(); 
    String value = info.getPropertyString(key); 
    System.out.println(key + " " + value); 
}