0

我正在尝试使用 UDP Adob​​e air 将大文件发送到 CPP。在传输大文件时,一些数据包丢失。如何检索丢失的数据包数据?我首先使用 tcp 将客户端(air)与服务器(cpp)连接起来。建立连接后,我开始文件传输。我打算使用 tcp 获取文件丢失的数据,然后使用 tcp 重新发送丢失的数据包。谁能告诉我如何才能知道传输时丢失了哪些数据包。谢谢你。

4

2 回答 2

1

你能澄清一下发生了什么吗?您说您正在通过 UDP 发送文件,但使用 TCP 连接到服务器 - 这两种协议在单个连接上是互斥的。

UDP 不提供任何检测数据包丢失的机制(这就是 TCP 的用途),因此默认情况下您将无法确定数据包是否丢失。您应该使用 TCP 来发送文件,因为它会为您管理发送/重新发送数据包。

如 AirServerSocket文档 ( 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

于 2010-05-29T15:30:47.950 回答
0

我的猜测,tcp 速度较慢,因为它会在数据包丢失时重新发送。所以这可能就是它变慢的原因。但另一方面,检查哪些数据包丢失并通过 udp 重新发送它们也需要更长的时间......

我会选择 TCP 而不是 UDP

就像 Sly 说的那样,udp 似乎在这里使用错误的工具

于 2010-06-24T13:25:43.627 回答