Получение пакетов в UDP

Если Вы были в C++, способ сделать это через OLE. Строго говоря, при поиске Google ImageDataObject, он покажет код C++, как вставить HBITMAP в Управление RTF. Одна ссылка здесь .

Теперь, как это переводит в код .NET, я не знаю. У меня в настоящее время нет времени для работы через детали.

9
задан 24 October 2009 в 20:09
поделиться

5 ответов

Вы получите все или ничего.

Но нет особой гарантии, что вы получите пакеты ровно один раз в том порядке, в котором они были переданы; возможны потеря пакетов, переупорядочение и (реже) дублирование.

Установлен максимальный размер кадра (65 507 байт), пакеты большего размера send () будут возвращать ошибку.

Вы должны предоставить достаточно буфера для получения всего кадра за один вызов.

UDP-пакеты МОГУТ быть фрагментированы на несколько IP-фрагментов, но ОС будет отбрасывать неполный пакет. Таким образом, это прозрачно для приложения.

13
ответ дан 4 December 2019 в 10:04
поделиться

UDP, в отличие от TCP, не является надежным протоколом. Он не предоставляет встроенного механизма, гарантирующего, что пакеты приходят в правильном порядке или даже приходят вообще. Тем не менее, вы можете написать свои подпрограммы отправки / получения в режиме шага блокировки, где каждый раз при отправке пакета отправитель должен дождаться получения ACK, прежде чем отправлять снова. Если ACK не получен по истечении заданного времени ожидания, пакет необходимо отправить повторно. Таким образом вы убедитесь, что пакеты принимаются в правильном порядке. (Для получения дополнительной информации ознакомьтесь с RFC для протокола TFTP , который использует эту стратегию.)

Наконец, если возможно, вы можете рассмотреть возможность использования TCP вместо этого.

2
ответ дан 4 December 2019 в 10:04
поделиться

Получатель получит весь пакет в один звонок. Длина пакета ограничена даже в теории :

Длина 16-битное поле, указывающее длину в байтах всего дейтаграмма: заголовок и данные. Минимум длина составляет 8 байтов, так как это длина заголовка. Размер поля устанавливает теоретический предел в 65 535 байтов (8 байтов заголовка + 65527 байтов data) для дейтаграммы UDP. В практический предел длины данных который налагается лежащим в основе Протокол IPv4 составляет 65 507 байт.

Однако реальный предел намного ниже, обычно можно с уверенностью принять 512 байт. См. Каков самый большой размер безопасного UDP-пакета в Интернете .

4
ответ дан 4 December 2019 в 10:04
поделиться

Данные, отправленные с использованием UDP, сгруппированы в пакетах , поэтому, если вы отправляете x количество байтов, то ЕСЛИ получатель получает пакет, он получит x количество байтов.

Однако ваши пакеты могут даже не прийти или они могут прийти не по порядку.

1
ответ дан 4 December 2019 в 10:04
поделиться

С UDP Lite Вы можете запросить частично поврежденные пакеты. Это может быть полезно для услуг видео и VoIP.

1
ответ дан 4 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: