使用 WSD 偵錯客戶端來驗證多播流量

如果一般主機和用戶端可以在網路上彼此看到,但實際的主機和客戶端無法看到,問題很可能在於透過網路在端點之間傳送的訊息中。 如需泛型主機和用戶端的詳細資訊,請參閱 使用一般主機和用戶端進行 UDP WS-Discovery。 由於完整網路追蹤可能難以收集、篩選和讀取,因此 WSD 偵錯用戶端工具可用來列印 WS-Discovery 訊息的多播端。

多播模式中的 WSD 偵錯用戶端只能檢查訊息的一半,因為客戶端無法列印單播訊息。 如果單播流量感興趣,請直接跳至 檢查 UDP WS-Discovery 的網路追蹤。

此程式會顯示一個方法,將顯示網路上的所有多播流量。 若要只顯示來自裝置的多播流量,請參閱下方的 篩選 WSD 偵錯客戶端結果 一節。

若要使用 WSD 偵錯客戶端來驗證多播流量

  1. 將主機和用戶端設定為跨網路執行(也就是說,請確定主機和用戶端在不同的計算機上運作)。
  2. 開啟命令提示字元並執行下列命令: WSDDebug_client.exe /mode 多播
  3. 藉由啟動主機和用戶端或在網路總管中按 F5 來重現失敗。
  4. 確認訊息為多播。

如果必要訊息顯示在 WSD 偵錯客戶端輸出中,則應用程式失敗可能位於多播訊息內容中,或存在於對應的單播回應消息中或內容中。 遵循檢查 UDP WS-Discovery 的網路追蹤中的指示,繼續進行疑難解答。

如果必要訊息顯示在 WSD 偵錯客戶端輸出中,則可能識別出應用程式問題的來源。 多播流量可能不會在網路上傳輸。 當應用程式未正確列舉多播配接器時,就會發生此失敗。 應用程式必須透過所有網路介面明確傳送多播流量;否則,可能不會針對回送介面或其他介面產生封包。 若要確認封包未出現在網路上,請遵循檢查 UDP WS-Discovery 的網路追蹤中的指示,並尋找遺漏多播訊息的證據。

確認訊息為多播

請一律確認 探查 訊息是多播。 選擇性地確認 HelloResolve 訊息是多播。 請注意,並非所有應用程式都使用解析訊息。 如需用戶端和主機所使用訊息模式的詳細資訊,請參閱 探索和元數據交換訊息模式開始使用WSDAPI疑難解答

訊息必須觸發,才能如上述步驟 3 所述傳送。 WSD 偵錯用戶端會將原始 SOAP 訊息顯示為輸出。 由於 WSD 偵錯用戶端在多播模式中列印的所有訊息都會透過多播套接字接收,因此不會顯示訊息目的地位址。

下列範例 WSD 偵錯客戶端輸出會顯示探查訊息。 <wsa:Action> 元素會將訊息識別為探查訊息。 <檢查 wsa:Action> 字段,以確認收到的訊息是否為探查訊息。

UDP message at 05/08/07 10:06:55 from soap.udp://[127.0.0.1:49334]
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="h
ttp://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsd="https://schemas.xmlso
ap.org/ws/2005/04/discovery" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/d
evprof"><soap:Header><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:T
o><wsa:Action>https://schemas.xmlsoap.org/ws/2005/04/discovery/Probe</wsa:Action>
<wsa:MessageID>urn:uuid:256ad815-1576-4e59-8efc-4c1e0f15fdd2</wsa:MessageID></so
ap:Header><soap:Body><wsd:Probe><wsd:Types>wsdp:Device</wsd:Types></wsd:Probe></
soap:Body></soap:Envelope>

下列範例 WSD 偵錯客戶端輸出會顯示 Hello 訊息。 <wsa:Action> 元素會將訊息識別為 Hello 訊息。

UDP message at 05/08/07 10:10:49 from soap.udp://[[::1]:49343]
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="https://www.w3.org/2003/05/soap-envelope" xmlns:wsa="h
ttp://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsd="https://schemas.xmlso
ap.org/ws/2005/04/discovery" xmlns:wsdp="https://schemas.xmlsoap.org/ws/2006/02/d
evprof"><soap:Header><wsa:To>urn:schemas-xmlsoap-org:ws:2005:04:discovery</wsa:T
o><wsa:Action>https://schemas.xmlsoap.org/ws/2005/04/discovery/Hello</wsa:Action>
<wsa:MessageID>urn:uuid:8999e29a-b056-4345-9e13-f42dbedab28a</wsa:MessageID><wsd
:AppSequence InstanceId="1" SequenceId="urn:uuid:abb0a2a1-6efc-4242-b8e7-c02484a
6eea2" MessageNumber="1"></wsd:AppSequence></soap:Header><soap:Body><wsd:Hello><
wsa:EndpointReference><wsa:Address>urn:uuid:02a76d74-82d0-43e6-ab09-16f54ab81ac6
</wsa:Address></wsa:EndpointReference><wsd:Types>wsdp:Device</wsd:Types><wsd:Met
adataVersion>1</wsd:MetadataVersion></wsd:Hello></soap:Body></soap:Envelope>

篩選 WSD 偵錯客戶端結果

篩選 WSD 偵錯客戶端結果有助於識別涉及裝置的事件流量。 只有在嘈雜的網路上才需要篩選。

有兩種方式可以篩選結果。 啟動 WSD 偵錯用戶端時,可以明確識別要篩選的 IP 位址。 或者,您可以在客戶端啟動之後指定IP位址。 本節說明這兩種方法。

若要指定要在啟動 WSD 偵錯客戶端時篩選的 IP 位址

  1. 將主機和用戶端設定為跨網路執行(也就是說,請確定主機和用戶端在不同的計算機上運作)。
  2. 收集裝置的IP位址。 如果裝置有多個位址(例如,它同時具有 IPv4 和 IPv6 位址),則必須收集所有位址。
  3. 開啟命令提示字元並執行下列命令:WSDDebug_client.exe /mode 多播 /ip 新增<裝置IP>

<裝置IP是> IP位址。 下列清單顯示此IP位址的一些範例格式。

  • 192.168.0.1
  • ::1
  • mydevice.contoso.com

WSD 偵錯客戶端會自動解析命令提示字元中提供的主機名。

在啟動 WSD 偵錯客戶端之後篩選結果

  1. 將主機和用戶端設定為跨網路執行(也就是說,請確定主機和用戶端在不同的計算機上運作)。
  2. 收集裝置的IP位址。 如果裝置有多個位址(例如,它同時具有 IPv4 和 IPv6 位址),則必須收集所有位址。
  3. 開啟命令提示字元並執行下列命令: WSDDebug_client.exe /mode 多播
  4. 在 WSD 偵錯用戶端命令提示字元中,執行下列命令:ip 新增<裝置 IP>
  5. 重複步驟 4,直到新增所有裝置 IP 位址為止。

下列程式假設 WSD 偵錯用戶端已啟動,並依 IP 位址進行篩選。

確認已篩選正確的IP位址

  • 在 WSD 偵錯用戶端命令提示字元中,執行下列命令: ip print

    正在篩選的IP位址清單隨即出現。

下列程式假設 WSD 偵錯用戶端已啟動,並依 IP 位址進行篩選。

停用篩選

  • 在 WSD 偵錯用戶端命令提示字元中,執行下列命令: ip clear

    所有多播流量現在都會顯示在偵錯輸出中。

WSDAPI 診斷程式

開始使用 WSDAPI 疑難解答