<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Windows下mDNS查詢API—DnsStartMulticastQuery/DnsStopMulticastQuery的使用

      背景及問題:

      目前很多局域網設備通過mNDS協議實現互聯,IP地址為自動IP段-169.254.x.x,有時候設備廠家提供的API需要通過知曉局域網中的IP地址/設備名,才能連接該設備。這樣要求每個軟件必須配置設備名或者啟動時遍歷所有IP(6w+),不是很方便,這時候可以通過mDNS查詢,自動拿到設備名,再進行連接,相對便捷,高效。

      解決辦法:

      在Win10 版本中,windows提供了mDNS查詢的API-DnsStartMulticastQuery,官方定義如下:

      其中PMDNS_QUERY_REQUEST定義為

      其中各字段定義如下:

      Version 必須 DNS_QUERY_REQUEST_VERSION1結構版本
      ulRefCount 保留。 請勿使用。
      Query 表示要通過 mDNS 查詢的名稱的字符串。
      QueryType 一個值,該值表示要查詢的記錄的類型。有關可能的值,請參閱DNS_RECORD_TYPE 。
      QueryOptions 一個表示查詢選項的 值。 DNS_QUERY_STANDARD 是唯一支持的值。
      InterfaceIndex 一個 值,該值包含要播發服務的接口索引。 如果 InterfaceIndex 為 0,則將考慮所有接口。
      pQueryCallback

      指向類型為 MDNS_QUERY_CALLBACK) 的函數 (的指針,該函數表示每當 mDNS 結果可用時要異步調用的回調

      pQueryContext 指向用戶上下文的指針。
      fAnswerReceived 保留。 請勿使用。
      ulResendCount 保留。 請勿使用

       

      需要注意的是:

      Query是所查詢的字符串, pQueryCallback是查詢等到回復的回調函數,定義如下:

      其中PDNS_QUERY_RESULT含有查詢結果DNS_RECORD ,對該結構體進行解析可以得到結果。拿到結果之后需要使用 DnsRecordListFree 函數釋放空間。

      示例程序:

      #include<Windows.h>
      #include"mdns.h"
      
      #pragma comment(lib, "dnsapi.lib")
      
      VOID WINAPI multicastQueryCallback(PVOID pQueryContext, PMDNS_QUERY_HANDLE pQueryHandle, PDNS_QUERY_RESULT pQueryResults)
      {
      //pQueryResults為返回結果,對其中的pQueryRecords進行解析
      if (pQueryResults->pQueryRecords)
      {
      //解析查詢結果
      
      // 釋放空間
      dnsRecordListFree(pQueryResults->pQueryRecords,DnsFreeRecordList)
      )
      
      
      }
      
      void GetQueryResponse(const wchar_t* queryName)
      {
      MDNS_QUERY_HANDLE h1;
      MDNS_QUERY_REQUEST r1;
      int context = 222;
      r1.Version = DNS_QUERY_REQUEST_VERSION1;
      r1.QueryOptions = DNS_QUERY_STANDARD;
      r1.QueryType = DNS_TYPE_PTR;
      r1.Query = queryName;
      r1.pQueryContext = (PVOID)context;
      r1.InterfaceIndex = 0;
      r1.pQueryCallback = multicastQueryCallback;
      
      DnsStartMulticastQuery(&r1, &h1);
      
      Sleep(100);
      DnsStopMulticastQuery(&h1);
      
      }

       

      需要注意的是:

      1. 目前該API似乎不是很穩定, Release/X64,雙字節字符串(VS字符集需設置為Unicode)平臺下使用沒有問題
      2. 此方法為異步查詢,如果不使用DnsStopMulticastQuery結束查詢,則查詢字符串會一直發送,回調函數會被一直調用。
      3. pQueryContext可以用來存儲查詢結果(示例中沒有使用)
      4. QueryOptions設為DNS_QUERY_BYPASS_CACHE可以繞過緩存查詢,每次查詢最新的結果
      5. 同樣的Release/X64平臺, DnsQuery API也可以查詢,且支持單雙字符串,但是DNS_QUERY_BYPASS_CACHE不起作用;同步查詢,有1s左右延時

       

      posted @ 2023-11-22 21:41  robot2017  閱讀(686)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产成人AV男人的天堂| 久久av色欲av久久蜜桃网| 久久精品国产一区二区三| 人妻系列无码专区69影院| 精品人妻人人做人人爽| 三人成全免费观看电视剧高清| 色综合夜夜嗨亚洲一二区| 91久久久久无码精品露脸| av午夜福利一片免费看久久| 久久久无码精品亚洲日韩蜜桃| 福利一区二区1000| 精品少妇后入一区二区三区| 风韵丰满熟妇啪啪区老熟熟女| 国产日韩精品免费二三氏| 粉嫩少妇内射浓精videos| 国产一区二区日韩在线| 欧美国产精品啪啪| 精品国产中文字幕av| 国产精品无码aⅴ嫩草| 九九热在线精品视频观看| 国精偷拍一区二区三区| 亚洲色丰满少妇高潮18p| 国产在线无码精品无码| 亚洲成人av在线资源网| 久久精品国产亚洲精品色婷婷| 最近中文字幕完整版hd| 干老熟女干老穴干老女人| av深夜免费在线观看| 少妇无套内射中出视频| 久久久久久久久毛片精品| 国产极品尤物免费在线| 中文字幕亚洲国产精品| 在线a亚洲v天堂网2018| 91在线国内在线播放老师| 四虎国产精品永久在线| 国产精品成人网址在线观看| 色综合色国产热无码一| 国内不卡不区二区三区| 亚日韩精品一区二区三区| 中文字幕精品亚洲人成在线| 午夜射精日本三级|