Я прочитал некоторые противоречивые вещи о том, как работают каналы дейтаграммы UDP/Java. Мне нужно знать несколько вещей:java datagramchannel потеря данных
ли UDP имеют наследовать путь, если сказать пакет, принимаемый целиком, так и в порядке, до .read (ByteBuffer б) называется? Я прочитал хотя бы одну статью, в которой говорится, что UDP inherit'ly сбрасывает неполные или неточные данные.
Является ли datagramchannel обрабатывать одну отправку (буфер ..) как один пакет дейтаграмм? что, если его частичная передача?
Может ли читать (..) читать более одного пакета данных, в результате чего данные отбрасываются, если буфер, предоставленный в качестве аргумента команд, предназначен только для обработки одного пакета данных?
«Не может быть.«Я ссылался на эту строку из api о чтении: если в дейтаграмме больше байт, чем осталось в данном буфере, оставшаяся часть дейтаграммы отбрасывается молча. Есть ли способ рассказать размер пакета перед чтением чтобы избежать этого? – user1908813
@ user1908813 №. Обычным методом является использование буфера, большего, чем самая большая ожидаемая датаграмма. Затем, если вы когда-либо получаете дейтаграмму такого размера, (i) это ошибка протокола приложения, и (ii) она может были также усечены. – EJP
Также вы сказали, что IP-учетные записи для отсутствующих пакетов, но что из-за порядка? – user1908813