2009-11-30 97 views
2

我正在對軟件進行一些維護,並且存在一個我不明白的問題。如何在Windows XP應用程序中加速UDP通信

應用程序使用Microsoft Visual C++ 6開發,並在Windows XP上運行。它由21個通過UDP套接字相互通信的應用程序組成。它是用於在PC環境中調試系統的嵌入式航空電子系統的仿真。每個應用程序模擬嵌入式系統中的一個節點,並且通過UDP模擬嵌入式網絡。該系統最初運行在多臺PC上,但現在可以在一臺四核心機器上運行。

該系統正在工作,但通信令人生厭。然而,打開Internet Explorer並訪問一個或兩個網站會導致我的應用程序突然間相互快速通信。

所以我的問題是,當訪問一個網站時,Internet Explorer設置了什麼,以便我的應用程序也可以設置它?系統的原始作者都還沒有,我的Windows編程經驗很少。

回答

2

它可能不是所有

  1. 後一個窗口問題檢查您的API,檢查緩衝區和檢查errormessages「GetLastError函數()」不會導致無效的(-1),並停止程序嘗試使用它,即使您的程序運行perfectit可能有有用的警告

  2. 檢查ACK或攻擊速度這是在通過網絡連接傳輸大量數據時的常見問題(< - 90%這是你的問題),這裏是關於該主題的有用話題(support.microsoft.com/kb/823764)

  3. 如果這些解決方案都不起作用,請嘗試檢查您的驅動程序版本與manfucturer網站。

  4. 最後的手段是那些有用的想法: 。使用此程序www.lvllord.de將最大半/開放連接數從8增加到50 。使用服務器版Windows可以提升一些基於互聯網的程序 。如果您在多線程應用程序的不同線程中使用多於2個套接字,則使用套接字多線程API可能會導致API產生一些混淆,請嘗試使用異步套接字或類似方法優化性能(msdn.microsoft.com/en-我們/庫/ ms738551(VS.85)的.aspx)

所以我的問題是什麼做的Internet Explorer訪問一個網站時,讓我的應用程序也可將其設置?系統的原始作者都還沒有,我的Windows編程經驗很少。

可能是ACK檢查它維基..這意味着在其他方面的攻擊速度。如果沒有,那麼這將是接收窗口大小
兩個設置是不可見的用戶..但可以通過設置程序如TuneUp實用工具或任何一般的網絡隱藏設置調節器
它可能只是做的伎倆..

+1

您的建議僅適用於TCP連接,而不是UDP連接,這個沒有ACK,並沒有「半開連接數」 – 2009-12-13 16:12:37

+0

接收窗口的大小是最後的希望? :D – VirusEcks 2009-12-13 17:15:52

0

嘗試使用Wireshark查看Internet Explorer正在執行的操作。

1

如果上述UDP協議實現可靠性的速度損失是由於在本地主機上大量的UDP數據包丟失。本地主機上的UDP性能非常糟糕,最好的選擇是將套接字API封裝在TCP層中。

如果是UDP廣播或組播,你將不得不看看如何實現代理進程通過TCP複用的消息。

可能更容易看那個存在於間水平如ZeroMQ工作以及消息傳遞API。

+0

我已經放棄了這個問題,但我一定會試用ZeroMQ。 – Gerhard 2010-09-01 06:12:22

相關問題