2010-05-29 129 views
0

我正在嘗試使用UDP Adob​​e air向CPP發送大文件。在傳輸大文件時,一些數據包丟失。我如何檢索丟失的數據包數據?我首先使用tcp將客戶端(空)與服務器(cpp)連接起來。建立連接後,我開始文件傳輸。我打算使用tcp獲取缺少文件的數據,然後使用tcp重新發送丟失的數據包。任何人都可以告訴我如何才能知道在傳輸過程中丟失了哪些數據包。謝謝。我們如何避免在UDP Flex中丟失數據包?

回答

1

您能否澄清一下發生了什麼?你說你通過UDP發送文件,但通過TCP連接到服務器 - 兩個協議在一個連接上是互斥的。

UDP沒有提供任何檢測數據包丟失的機制(這就是TCP的用途),因此默認情況下,您將無法確定數據包是否丟失。 您應該使用TCP來發送文件,因爲它可以爲您管理髮送/重新發送數據包。

由於空氣ServerSocket文檔(http://help.adobe.com/en_US/air/reference/html/flash/net/ServerSocket.html)中指出:

的所有數據包[發送過來TCP]保證到達(合理的) - 任何丟失的數據包重傳。通常,TCP協議比UDP協議更好地管理可用網絡帶寬。大多數需要套接字通信的AIR應用程序應該使用ServerSocket和Socket類[TCP],而不是DatagramSocket類[UDP]。

在空中網絡類的更多信息,請參見本頁面:
http://help.adobe.com/en_US/air/html/dev/WSb2ba3b1aad8a27b0-181c51321220efd9d1c-8000.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7cfb

+0

這個。 UDP適用於流式傳輸視頻,您不想重新發送丟棄的數據包。 – fenomas 2010-05-30 03:29:01

+0

嗨狡猾紅衣主教,謝謝你的迴應。對不起,我的問題並不清楚。我的客戶端是空氣應用程序,服務器是cpp。我使用tcp將客戶端連接到服務器,並在得到確認後確認它是否已連接...我使用UDP再次連接並使用UDP傳輸文件。現在在大文件的時候,我正在服務器端丟失數據包。現在我只想獲取丟失數據包的列表,並希望客戶端使用tcp重新發送丟失的數據包。然後我的空氣應用程序使用UDP重新發送丟失的數據包。 – 2010-05-31 07:33:41

+0

總之,對於連接確認和數據包丟失數據,我想使用tcp和使用UDP進行文件傳輸。一切都很順利......除了丟包。現在我想知道丟失的數據包列表並重新發送......我如何獲取丟失數據包的數據。 – 2010-05-31 08:46:21

0

我的猜測,TCP是慢,因爲它不會再發送當一個數據包丟失。所以這可能是爲什麼它更慢。但另一方面,其檢查數據包迷路和UDP重新發送他們也將需要更長的時間......

我會去的,而不是TCP UDP的

像狡猾說,UDP似乎是錯誤的工具這裏使用