Как увидеть свойства службы JmDNS на стороне получателя? - PullRequest
0 голосов
/ 16 сентября 2011

Один из способов создания сервисов 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);

но, тогда, что на машине, получающей эту услугу, что я могу сделать, чтобы увидеть эти свойства?

Буду признателен за любую помощь ...

Ответы [ 2 ]

0 голосов
/ 17 марта 2015
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);
}
0 голосов
/ 25 июля 2012

Прошло много времени с тех пор, как об этом спросили, но у меня был тот же вопрос.Одна проблема с исходным вопросом заключается в том, что хост и порты не должны быть помещены в текстовое поле, и в этом случае на самом деле должно быть два типа услуг: один безопасный и один небезопасный (или, возможно, использование подтипов).1002 * Вот неполный пример, который получает список запущенных служб рабочей станции:

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.
    ...
  }
}

Из-за способа реализации JmDNS первый вызов list () для данного типа выполняется медленно (несколько секунд)но последующие звонки будут довольно быстрыми.Поставщики услуг могут изменять свойства, вызывая info.setText (настройки), и эти изменения будут автоматически распространяться среди слушателей.

...