Как перечислить службы mDNS в Windows 10? - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь использовать DeviceInformation.CreateWatcher в приложении UWP для перечисления mDNS сервисов:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (_dnsWatcher == null)
    {
        _dnsWatcher = DeviceInformation.CreateWatcher("(System.Devices.Aep.ProtocolId:=\"{4526e8c1-8aac-4153-9b16-55e86ada0e54}\")");
        _dnsWatcher.Added += DnsWatcher_Added;
        _dnsWatcher.EnumerationCompleted += DnsWatcher_EnumerationCompleted;
        _dnsWatcher.Removed += DnsWatcher_Removed;
        _dnsWatcher.Stopped += DnsWatcher_Stopped;
        _dnsWatcher.Updated += DnsWatcher_Updated;
        _dnsWatcher.Start();
    }
}

Wireshark показывает отсутствие mDNS трансляции и только обратный вызов EnumerationCompletedслучается.

Я что-то упустил?

1 Ответ

0 голосов
/ 01 апреля 2019

Вам нужно добавить то, что вы смотрите.Вот мой рабочий код:

            var proto = "_gopher._tcp"; // e.g. _http._tcp
        var queryString = $"System.Devices.AepService.ProtocolId:={{{DnsSdProtocol}}} AND System.Devices.Dnssd.ServiceName:=\"{proto}\" AND System.Devices.Dnssd.Domain:=\"local\"";

        var askFor = new String[] { "System.Devices.Dnssd.HostName",
                            "System.Devices.Dnssd.ServiceName",
                            "System.Devices.Dnssd.InstanceName",
                            "System.Devices.IpAddress",
                            "System.Devices.Dnssd.PortNumber",
                            "System.Devices.Dnssd.TextAttributes",
                            };
        dw = DeviceInformation.CreateWatcher(queryString, askFor, DeviceInformationKind.AssociationEndpointService);

Обратите внимание, что моя строка запроса включает в себя протокол для поиска (_gopher._tcp) и домен DNS.Предупреждение: я новичок в DNS-SD и не знаю, какие настройки домена DNS действительны.

...