Flutter/Multicast DNS: как протестировать сетевое обнаружение с помощью MDNS

Я реализовал сетевое обнаружение с помощью МДНС для своего мобильного приложения Flutter, используя пакет multicast_dns.

Идея заключалась в том, что мобильное приложение должно иметь автоматически определять адрес сервера в локальной сети. 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

Однако ничего подобного для Окна (или Linux) я не нашел. Как мне рекламировать/макетировать службу http для каждого DNS, чтобы проверить обнаружение моей сети?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Самый простой способ, вероятно, просто следовать эти шаги, чтобы получить тот же инструмент, dns-sd работающий в Windows.

Лично я бы просто сделал быструю программу на Go, используя mdnsупаковка, которую я мог бы скомпилировать в любую ОС, какую захочу.

В любом случае работает.

В итоге я установил dns_sd на Windows. Работал отлично, как описано.

Josip Domazet 05.04.2022 23:04

Другие вопросы по теме