Почему я получаю датаграммы UDP не в порядке даже с процессами, работающими локально?

Я разрабатываю интерфейс Java между сервером потоковой передачи и клиентом флэш-памяти. Я заметил, что датаграммы UDP могут достигнуть моего интерфейса не в порядке, даже если оба процесса работают локально.

Это нормально? Я думал, что, поскольку никакая датаграмма не должна проходить маршрутизатор или любое сетевое устройство, затем этого не должно происходить.

13
задан Cœur 3 February 2018 в 07:17
поделиться

4 ответа

На самом деле нет никаких гарантий заказа и приема О UDP-пакетах, даже если они отправляются localhost на localhost. Просто потому, что спецификация протокола ничего не подразумевает.

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

7
ответ дан 1 December 2019 в 23:47
поделиться

Это будет зависеть от операционной системы. Хотя вы не указали операционную систему, это все равно не важно. Чтобы оставаться переносимым, вы всегда должны ожидать, что ваши датаграммы будут получать данные не по порядку.

8
ответ дан 1 December 2019 в 23:47
поделиться

UDP не указан для сохранения последовательности, как все сказано на плакатах выше, но если нет промежуточных маршрутизаторов, я также подозреваю ошибку в вашем код.

0
ответ дан 1 December 2019 в 23:47
поделиться

Несмотря на то, что вы используете localhost, ожидайте, что датаграммы UDP будут не последовательными в фактическом развертывании.

Если они нужны последовательно, попробуйте TCP.

2
ответ дан 1 December 2019 в 23:47
поделиться
Другие вопросы по тегам:

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