Windows.Networking.ServiceDiscovery.Dnssd
命名空间是否允许广告可通过 Apple 的 Bonjour 发现的服务?
Microsoft 的文档提到了所有正确的 DNS-SD RFC,但我无法使用此Bonjour Browser 程序发现我的程序。我知道 Bonjour Browser 程序正在运行,因为它会发现我网络上的其他设备以及通过mDNSResponder
. 微软关于这个命名空间的文档非常模糊,让我感到疑惑。
这段代码中有什么明显错误的地方吗?
async Task RegisterServiceAsync()
{
var hostNames = NetworkInformation
.GetHostNames()
.Where(x => x.Type == HostNameType.DomainName)
.Select(x => new KeyValuePair<string, HostName>(x.ToString(), x))
.ToList();
var hostName = Pick("Pick a host name:", hostNames);
Console.WriteLine($"Host name is \"{hostName}\"");
var service = new DnssdServiceInstance(
dnssdServiceInstanceName: "abc._tcp.local.",
hostName: hostName,
port: 13337
);
using (var socket = new StreamSocketListener())
{
var registration = await service.RegisterStreamSocketListenerAsync(socket);
Console.WriteLine(registration.Status);
Console.WriteLine($"Renamed: {registration.HasInstanceNameChanged}");
Console.WriteLine($"Service instance name: {service.DnssdServiceInstanceName}");
Console.ReadKey(true);
}
}
示例输出:
1) 主机名.域.本地 2) 主机名.local 选择一个主机名:(1-2) 2 主机名是“hostname.local” 成功 更名:假 服务实例名称:abc._tcp.local。