2011-09-16 5 views
0

一つの方法は次のとおりです。小道具は、サービスの一部propetiesを説明地図で受信側でJmDNSサービスのプロパティを表示する方法は? JmDNSサービスを作成する

ServiceInfo.create(type, name, port, weight, priority, props); 

。誰かがそのプロパティの使用を示す例を持っていますか?例えば、それらを受信者の部分で使用する方法です。その後、このサービスを受けたマシンで、私はこれらのプロパティを参照するために何を行うことができ、

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

を任意の助けをapreciateだろう、これは頼まれたので、それはしばらくしているが、私は同じ質問がありました。元の質問の1つの問題は、ホストとポートをテキストフィールドに入れてはいけないということです。この場合、実際には2つのサービスタイプが安全で、1つは安全ではない(おそらくはサブタイプを使用する)べきです。遅い(数秒)指定された型に)により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(settings)を呼び出してプロパティを変更することができ、変更は自動的にリスナーに伝播されます。

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); 
} 
関連する問題