Re: Надежный UDP сервер
От: Pzz Россия https://github.com/alexpevzner
Дата: 19.11.10 12:56
Оценка:
Здравствуйте, Ifrin, Вы писали:

I>Здравствуйте, нужно сделать UDP сервер-клиент для передачи больших файлов. Стандартный вариант я так понимаю выглядит примерно следующим образом: "сервер послал блок пакетов->ждет ответа от клиента->получил ответ, послал следующий блок", вариаций этой структуры может быть много, но суть одна — сервер с разной периодичностью должен ожидать подтверждений от клиента. Стоит ли заморачиваться на системе без ожиданий или же подобная система может пошатнуть надежность передачи(ведь клиент может, допустим, стоять на очень слабой машине по отношению к серверу или же по неосторожности включим какой-нибудь фаервол, который заблокирует 1000 пакетов)?


В нормально работающем интернете теряется 1-2% пакетов. Если случается какая-то неисправность, потери могут быть гораздо больше. Поэтому пытаться передавать большой файл без контроля доставки и досылки недошедшего — неразумно (можно использовать кодирование с избыточностью, но надо понимать, что если оно у вас передает, к примеру, блоками из 5-и пакетов, и выдерживает потерю одного пакета из блока, то это уменьшает количество недошедших блоков в 5 раз, а не в миллион, т.е. на большом файле все равно будут потери и потребуется retransmit).

I>ЗЫ: TCP не предлагать)


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