Zeroconf: 无法获取 txt 记录

Zeroconf: Unable to get txt records

我一直在尝试在我的 8.1 phone 应用程序中使用 Onovotny's Zeroconf 包。它发现了我正在寻找的服务,但返回了 none 的 TXT 记录。

在 iOS 中,我使用 NSNetServiceBrowser,对于 Android,我使用 JmDNS。两者都给了我我需要的一切,所以我知道这不是服务。

这是我正在使用的代码:

public async Task StartDiscovery()
{
    Action<IZeroconfHost> callback = new Action<IZeroconfHost>((IZeroconfHost host) => 
    {
        Debug.WriteLine(host.Services.Count); 
    });

    IReadOnlyList<IZeroconfHost> results = 
        await ZeroconfResolver.ResolveAsync(SERVICE_TYPE, new TimeSpan(0, 0, 10), 4, 2000, callback);
    Debug.WriteLine(results);
}

当我在回调中设置断点时,这就是我所看到的。

我不确定是我做错了什么,还是图书馆不能处理我的情况。无论哪种方式,我们都将不胜感激。

注意:我几天前在 Zeroconf GitHub 回购上发布了一个问题,但没有收到回复。

我没有使用 NuGet 包,而是将代码拉到我的项目中并设置了几个断点。

在 ZeroconfResolver.cs 中,当我将 Additionals 更改为 Answers 时,我得到了我的服务的 txt 记录。

ZeroconfResolver.cs 第 249 行

// Get the matching service records
var serviceRecords = response.Answers
    .Where(r => r.NAME == ptrRec.PTRDNAME)
    .Select(r => r.RECORD)
    .ToList();

编辑: 合并 Additionals 和 Answers 列表是更好的方法。

List<RR> resourceRecords = new List<RR>().Union(response.Answers).Union(response.Additionals).ToList();
// Get the matching service records
var serviceRecords = resourceRecords
    .Where(r => r.NAME == ptrRec.PTRDNAME)
    .Select(r => r.RECORD)
    .ToList();