gpt4 book ai didi

java - 客户端-服务器中的 JmDNS 服务发现

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:54 30 4
gpt4 key购买 nike

我正在尝试使用 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,你就可以解析/使用它来打开套接字连接。希望有所帮助。

关于java - 客户端-服务器中的 JmDNS 服务发现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8174234/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com