Как мы можем избежать отсутствия пакетов в UDP Flex? - PullRequest
0 голосов
/ 29 мая 2010

Я пытаюсь отправить большие файлы, используя UDP Adobe Air, в CPP. При передаче больших файлов некоторые пакеты отсутствуют. Как я могу получить данные отсутствующих пакетов? Я в первую очередь соединяю клиента (air) с сервером (cpp), используя tcp. После установления соединения начинаю передачу файлов. Я планирую получить отсутствующие данные в файле, используя tcp, а затем повторно отправить отсутствующие пакеты, используя tcp. Может кто-нибудь сказать мне, как я могу узнать, какие пакеты отсутствуют при передаче. Спасибо.

Ответы [ 2 ]

1 голос
/ 29 мая 2010

Не могли бы вы уточнить, что происходит? Вы говорите, что отправляете файлы по UDP, но подключаетесь к серверу по протоколу TCP - оба протокола являются взаимоисключающими для одного соединения.

UDP не предоставляет никакого механизма для обнаружения потери пакетов (для этого и нужен TCP), поэтому по умолчанию вы не сможете определить, были ли потеряны пакеты. Вы должны использовать TCP для отправки файлов, поскольку он управляет отправкой / отправкой пакетов для вас.

Как указано в документации Air ServerSocket (http://help.adobe.com/en_US/air/reference/html/flash/net/ServerSocket.html):

Все пакеты [отправленные по TCP] гарантированно поступят (в пределах разумного) - все потерянные пакеты передаются повторно. В целом, протокол TCP управляет доступной пропускной способностью сети лучше, чем протокол UDP. Большинство приложений AIR, для которых требуется соединение через сокеты, должны использовать классы ServerSocket и Socket [TCP], а не класс DatagramSocket [UDP].

См. Эту страницу для получения дополнительной информации о классах сети Air:
http://help.adobe.com/en_US/air/html/dev/WSb2ba3b1aad8a27b0-181c51321220efd9d1c-8000.html#WS5b3ccc516d4fbf351e63e3d118a9b90204-7cfb

0 голосов
/ 24 июня 2010

Полагаю, tcp медленнее, потому что он выполняет повторную отправку, когда пакет теряется. так что, вероятно, поэтому он медленнее. но, с другой стороны, проверка того, какие пакеты потеряны и повторная отправка их с помощью udp, также займет больше времени ...

я бы пошел по TCP вместо UDP

Как говорит Слай, UDP, кажется, не подходит для использования здесь

...