2017-02-24 64 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