客户端 – 服务器中的JmDNS服务发现

我正在尝试使用JmDNS在我的客户端 – 服务器应用程序中启用服务发现。 我完全理解服务器端的服务注册表,代码类似于:

JmDNS jmdns = JmDNS.create(localhost); jmdns.register(serviceInfo); 

但是,我无法弄清楚如何让我的客户端从注册的服务中检索端口号和IP地址,并使用此数据打开TCP连接。 我搜索了如何使用JmDNS的例子,但无济于事。 这里有人能给我一些基本的例子吗? 或者,如果任何人有关于JmDNS的良好资源/教程的任何链接,他们可以提供吗?

注意:JmDNS在这里是必要的,所以我很感激只有JmDNS的答案,而不是提供替代方案。 另外,我已经广泛地查看了JmDNS API,但仍然无法弄清楚,所以请不要将文档链接发布为资源。

谢谢。

服务器端:

 mdnsServer = JmDNS.create(localhost); // Register a test service. ServiceInfo testService = ServiceInfo.create("my-service-type", "Test Service", 6666, "test service"); mdnsServer.registerService(testService); 

客户端:

 private ServiceListener mdnsServiceListener = new ServiceListener() { public void serviceAdded(ServiceEvent serviceEvent) { // Test service is discovered. requestServiceInfo() will trigger serviceResolved() callback. mdnsService.requestServiceInfo(Constants.mdnsServiceType, serviceEvent.getName()); } public void serviceRemoved(ServiceEvent serviceEvent) { // Test service is disappeared. } public void serviceResolved(ServiceEvent serviceEvent) { // Test service info is resolved. String serviceUrl = serviceEvent.getInfo().getURL(); // serviceURL is usually something like http://192.168.11.2:6666/my-service-name }; mdnsService = JmDNS.create(); mdnsService.addServiceListener("my-service-type", mdnsServiceListener); ServiceInfo[] infos = mdnsService.list(Constants.mdnsServiceType); // Retrieve service info from either ServiceInfo[] returned here or listener callback method above. mdnsService.removeServiceListener("my-service-type", mdnsServiceListener); mdnsService.close(); 

获得URL http://192.168.11.2:6666/myTestService ,您可以解析/使用它打开套接字连接。 希望有所帮助。