Хорошо, поэтому я программирую для своего сетевого курса, и мне нужно реализовать проект на Java, используя UDP. Мы реализуем HTTP-сервер и клиент вместе с функцией «gremlin», которая развращает пакеты с определенной вероятностью. HTTP-сервер должен разбить большой файл на несколько сегментов на уровне приложения, который будет отправлен клиенту через UDP. Клиент должен собрать собранные сегменты на уровне приложения. Однако мне интересно, если UDP по определению ненадежен, почему мне приходится имитировать ненадежность?Каковы шансы потерять UDP-пакет?
Моя первая мысль заключается в том, что, возможно, это просто потому, что мой инструктор вычисляет в нашем случае, и клиент, и сервер будут работать на одном компьютере и что файл будет перенесен из одного процесса в другой на 100% надежно даже над UDP, поскольку он находится между двумя процессами на одном компьютере.
Это привело меня к вопросу о том, следует ли UDP, потерять пакет, испортить пакет или выдать его из строя, если сервер и клиент были двумя процессами на одном компьютере, и ему не пришлось выходить из строя фактическая сеть.
Я также задаюсь вопросом, какие шансы фактически потерять пакет, испортив его или избавить его от порчи в действительности, обычно будут через Интернет между двумя географически удаленными хостами.
Большое значение для всех, кто может пролить свет на любой из этих вопросов для меня.
Угадайте, что у вас никогда не было плохой интернет-связи; p UDP в основном используется в сценарии, где невозможно ответить получателю. Пример передачи данных по спутнику, радиоволнам и т. Д. – leppie
Вместо «где невозможно ответить получателю» я бы сказал, что он используется в сценариях, где потеря пакета не имеет большого значения (много), например аудио/видео потоковая передача, видеоконференции и т. д. – Trap
Говоря из опыта здесь, у меня есть проект, в котором две программы обмениваются данными через UDP, и время от времени происходит потеря пакетов, я не могу себе представить, почему они работают на одном компьютере и общаются через петлевой интерфейс. Так что да, хорошо, что вам нужно было реализовать функцию gremlin, потому что даже если надежность высока (у меня нет статистики, но я думаю выше 99,9% или даже выше по петле), потеря пакетов по-прежнему происходит , – soger