2013-08-23 72 views
0

我正在寫一個C++應用程序MyMasterApp向多個客戶端(約5-10)發送信息(OSC通過UDP),這是移動設備(Android或iPhone)通過WiFi。多播大包包含所有信息到多個客戶端vs個別包到目標客戶端

每個設備都將接收相同類型的唯一信息。可能每個設備大約100-200字節,我將以30Hz更新所有設備。

我可以向每個設備發送一個唯一的數據包,或者我可以創建一個包含每個設備的唯一數據位的大結構,包含目標ID,將其組播到所有設備,然後僅限每個設備挑選出需要的數據。

  • 發送DATA1到DEVICE1
  • 發送DATA2到DEVICE2
  • 發送DATA3至DEVICE3
  • 發送DATA4到device4

VS

  • 爲所有設備創建一個包含DATA1,DATA2,DATA3等多播數據的新DATA,並且每個設備選擇相關的數據以供使用。

在我嘗試使用這兩種方法之前,是否有任何理論上的或者已經記錄下來的實際優勢(例如更好的性能,更少的衝突,丟失的數據包等)?或者差異可以忽略不計?

我有同樣的項目在 Should I listen on different ports, or the same port?

回答

2

一個組播的主要優點是可擴展性,以便在將來,如果你傾向於有更多的設備多播將幫助相關網絡性能問題。更好地看看多播與單播性能的指導

M. Ebrahimi,M. Daneshtalab,P. Liljeberg和H. Tenhunen。三維網狀結構中單播和多播通信的性能評估。在計算機體系結構和數字系統(CADS),2010年第15屆CSI國際研討會上,第161-162頁,9月。 2010.

+0

對於引文來說,+1應該更加真實,但另一方面,設備數量越多,這些數據報將需要越大,並且在某一時刻很快它們將變得太大而不能發送。 – EJP

2

即使將未來的增長放在一邊,200個字節x 10個設備的最壞情況已經是2000個字節,這已經太大而無法通過UDP發送。實際的最大UDP數據報一般保持爲576字節或534這樣的數字。所以你沒有選擇。你必須單播。