2017-09-02 106 views
-1

我開發了一個應用程序,通過UDP與外部設備進行通信。在大多數情況下,它似乎完美地工作,但我有一個客戶在某檯筆記本電腦上使用我的應用程序時經歷了數據包丟失。他的其他筆記本電腦很好。半雙工UDP?

他檢查了緩衝區大小等明顯的東西,但沒有什麼明顯的錯誤。

然後,他在筆記本電腦上安裝了EtherSnoop,以試圖查看正在發生的事情,並且每當筆記本電腦向外部設備發送消息時,它都會停止在短時間內收聽收到的消息。就好像筆記本電腦的以太網鏈路只能進行半雙工操作。

有關的筆記本電腦是惠普使用RealTek網絡芯片。他的好筆記本電腦是聯想使用英特爾網絡芯片。

是否有任何其他設置可能導致此行爲?在這個應用程序中丟包是不可接受的,我們需要找出惠普的「不同」。

+0

您可能想要在問題中進行編輯。你在尋找驗證半雙工是一件事嗎?您是否在尋找方法來檢測這種情況並減輕數據包丟失? – wmorrell

+0

注意:即使是(工作)半雙工NIC也不會丟包。它將排隊,直到頻道免費。除非隊列已滿,否則。 – spectras

+0

我剛剛修改了這個問題。 –

回答

-1

那麼,如果客戶端系統運行不穩定/遇到數據包丟失,你幾乎沒有辦法。即使在按照CSMA/CD使用半雙工鏈路的情況下,UDP也應該可靠地傳輸(見下文) - 除非存在雙工不匹配或衝突域過大。

你可以排除網絡連接,排除/修復雙工不匹配,檢查線路,檢查網卡&開關CONFIGS,更新網卡驅動程序,更換硬件 - USB加密狗,......

雙工不匹配可由交換機端口或NIC引起。除非配置很糟糕,但它非常罕見。您將看到全雙工側的FCS錯誤和半雙工側的極端碰撞計數。總的來說,當您嘗試認真使用它時,連接會表現得非常慢。千兆位鏈路僅使用FDX,因此雙工不匹配將不太可能。 PS:正如EJP已經正確指出的那樣,UDP在工程中不可能是「可靠的」,100%可靠 - 在上面,我使用99%的「可靠」這種花園類型。

+1

關於UDP沒有什麼可靠的。這是一個即忘即忘的協議。 – EJP

+0

UDP依賴底層協議進行傳輸。通過以太網運行,除非網絡出現問題,否則它應該通過。 – Zac67

-1

此問題原來是由相關筆記本電腦上的緩衝區溢出引起的。至於爲什麼這款筆記本電腦與其他筆記本電腦不同,仍然是一個謎。我已經修改了我的應用程序,以解決這檯筆記本電腦上的緩衝區問題,現在看起來都很順利。