gpt4 book ai didi

browser - 解析浏览器地址栏中的 mDNS .local URL

转载 作者:行者123 更新时间:2023-12-02 16:04:19 34 4
gpt4 key购买 nike

我正在尝试在 LAN 中运行 HTTP 服务器,并希望使用另一台台式计算机上的浏览器访问它。由于我不喜欢手动输入 IP 地址和端口,因此我尝试使用 jmDNS 设置 mDNS。

        String type = "_http._tcp.local.";
jmdns = JmDNS.create();
jmdns.addServiceListener(type, listener = new ServiceListener() {
@Override
public void serviceResolved(ServiceEvent ev) {
Log.d(LogTag.SERVER, "Service resolved: " + ev.getInfo().getQualifiedName() + " port:"
+ ev.getInfo().getPort());
}

@Override
public void serviceRemoved(ServiceEvent ev) {
Log.d(LogTag.SERVER, "Service removed: " + ev.getName());
}

@Override
public void serviceAdded(ServiceEvent event) {
// Required to force serviceResolved to be called again (after the first search)
jmdns.requestServiceInfo(event.getType(), event.getName(), 1);
}
});
serviceInfo = ServiceInfo.create(type, NAME, PORT, "test service");
jmdns.registerService(serviceInfo);

mDNS 条目在 ZeroConf 浏览器应用程序上显示得很好。通过 IP 和端口可以正常访问服务器。

ZeroConf Browser Screenshot

在 Windows 7 上,在任何地址栏(Firefox、Chrome、Safari、IE)中输入带有 .local TLD (= http://roseblade.local/ ) 的名称并没有多大作用,而且根据我的研究显示,这几乎是一项徒劳的任务。我安装了 Apple Bonjour,但这仅有助于运行 Hobbyist Software 的 Bonjour 浏览器。就 Linux 而言,我对 elemantaryOS 和 Midori 进行了相同的尝试,但也没有成功。我目前无法使用 OSX 或 iOS。

如何获得 .local 地址的解析以在我的浏览器(Firefox、Chrome、Linux、OSX 或 Windows7 上的任何浏览器)中工作?难道我做错了什么?此时我只想验证 mDNS 是否可以像系统上那样工作。

也欢迎提供有关该问题的 Material 。

最佳答案

mDNS 和 Bonjour 可能有点令人困惑,因为它们实际上包含一些不同的功能。服务发现就是其中之一,我相信您已经实现了这一点。解析地址(这就是您正在寻找的地址)是单独的,并且需要单独解决。地址解析工作完成后,您可以将服务发现指向解析器提供的 DNS 记录。

mDNS 地址解析的工作原理是通过网络多播 DNS 查询。通过绑定(bind)到 UDP 端口、监听查询并应答查询,您可以向 mDNS 客户端提供 DNS 记录。为此,您可以使用现有的 mDNS 服务器(例如 avahi-daemon),或者,如果您需要自定义功能或与应用程序集成,请使用 Node.js 的 multicast-dns 之类的东西来实现一个。 .

但是,根据我的经验,这相当不稳定。某些网络配置会干扰 mDNS 解析,某些操作系统也是如此(例如 iOS 8,请参阅围绕 discoveryd 与 mDNSResponder 的整个争论)。

关于browser - 解析浏览器地址栏中的 mDNS .local URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637622/

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