2017-02-24 92 views
-1

我想在通信过程中发现设备丢失了连接。 Bonjour将设备条目保存在本地高速缓存中,因此如果发现与设备的通信丢失,我想调用DNSServiceReconfirmRecord来验证设备是否在网络中。使用Bonjour API进行网络设备丢失

DNSSD_API DNSServiceReconfirmRecord(
DNSServiceFlags flags, 
uint32_t  interfaceIndex, 
const char  *fullname, 
uint16_t  rrtype, 
uint16_t  rrclass, 
uint16_t  rdlen, 
const void  *rdata 
); 

如何获得rdata值?谁能指导我如何使用DNSServiceReconfirmRecord?除了rdata以上的功能,我已经拥有了所有必需的信息。

+1

请编辑您的问题以显示[迄今为止尝试的内容](http://whathaveyoutried.com)。您应该包含您遇到问题的代码[mcve],然后我们可以尝试帮助解决特定问题。你还应该阅读[问]。 –

回答

0

您应该考虑在rrtype,然后适当地提供rdataWiki有DNS记录类型列表。指针rdata应指向资源记录的原始数据,即创建它自己或找到可以的库。

实施例:

如果rrtype == kDNSServiceType_PTRkDNSServiceType_PTR = 12),然后rdata必须指向RFC 1035定义的 “指针记录”。

+0

谢谢。我如何在上面的例子中创建rdata我的自我?我无法在图书馆找到任何东西。我正在研究windows,我只能访问dnn-sd.h。 – bbt

+0

您应该遵循RFC链接或其他定义,如果:'rrtype!= kDNSServiceType_PTR' – Jonas

+0

我将rdata设置为NULL RDATA格式。我可以看到函数没有成功并返回错误-65541。我检查wirehshark跟踪。在此函数调用期间没有数据包传输。 DNSServiceReconfirmRecord(kDNSServiceFlagsForce,0,“xyz._xxx._udp.local”,kDNSServiceType_PTR,kDNSServiceClass_IN,27,bigNULL); – bbt