2010-05-29 91 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似乎是错误的工具这里使用