Flutter/Multicast DNS:如何使用 MDNS 测试网络发现

Flutter/Multicast DNS: How to test network discovery with MDNS

我已经使用 multicast_dns 包为我的 Flutter 移动应用程序通过 MDNS 实现了网络发现。

这背后的想法是移动应用程序应该自动检测本地网络上的服务器地址。 MDNS 似乎是更优雅的方法,而不是端口扫描整个本地网络。

代码看起来像这样:

final MDnsClient client = MDnsClient(rawDatagramSocketFactory: factory);

const String name = '_http._tcp';
await client.start();
// Get the PTR recod for the service.
await for (PtrResourceRecord ptr in client
    .lookup<PtrResourceRecord>(ResourceRecordQuery.serverPointer(name))) {

  // Use the domainName from the PTR record to get the SRV record,
  // which will have the port and local hostname.
  // Note that duplicate messages may come through, especially if any
  // other mDNS queries are running elsewhere on the machine.
  await for (SrvResourceRecord srv in client.lookup<SrvResourceRecord>(
  ResourceRecordQuery.service(ptr.domainName))) {
      final String bundleId =
      ptr.domainName; //.substring(0, ptr.domainName.indexOf('@'));
      print('http server instance found at '
      '${srv.target}:${srv.port} for "$bundleId".');
  }
}
client.stop();

现在,我正在寻找一种方法来使用 MDNS 模拟上述服务,因为服务器实际上还没有准备好。

我为 MACOS 找到了类似这样的东西:

dns-sd -R TestService _http._tcp . 3000

但是,对于 Windows(或 Linux),我没有找到类似的东西。我如何 advertize/mock 每个 DNS 的 http 服务以测试我的网络发现?

最简单的方法可能就是按照 获取相同的工具,dns-sd 运行 windows。

就我个人而言,我只会使用 mdns package 在 Go 中编写一个快速程序,我可以将其编译为我想要的任何 OS。

两种方法都行。