首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zeroconf:无法获得txt记录

Zeroconf:无法获得txt记录
EN

Stack Overflow用户
提问于 2015-04-13 12:33:54
回答 1查看 471关注 0票数 0

我一直试图在我的8.1手机应用程序中使用奥诺沃特尼氏Zeroconf包。它发现我正在寻找的服务,但没有任何TXT记录回来。

在iOS中,我使用的是NSNetServiceBrowser和安卓( JmDNS )。两个人都给了我我需要的一切,所以我知道这不是服务。

这是我使用的代码:

代码语言:javascript
复制
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);
}

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

我不知道我是不是做错了什么,或者图书馆没有处理好我的情况。无论哪种方式,任何帮助都将不胜感激。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-13 18:37:27

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

在ZeroconfResolver.cs中,当我将附加词更改为答案时,就会得到服务的txt记录。

ZeroconfResolver.cs 249号线

代码语言:javascript
复制
// Get the matching service records
var serviceRecords = response.Answers
    .Where(r => r.NAME == ptrRec.PTRDNAME)
    .Select(r => r.RECORD)
    .ToList();

编辑:合并附加词和答案列表的是一个更好的方法。

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29605456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档