Re[2]: Надежный UDP сервер
От: Ifrin  
Дата: 19.11.10 13:22
Оценка:
Здравствуйте, Pzz, Вы писали:

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


Ну досылку делать надо это да, у меня скорее вопрос заключается немного в другом.
Например система вида: "сервер постоянно шлет пакеты-> клиент постоянно считывает, каким-то образом определяет недошедшие и отправляет сообщение серверу о потерях-> сервер вместе с обычными пакетами шлет недошедшие". То есть сервер находиться в постоянной пересылке, он не ожидает ответа об отдельных блоках пакетов от клиента. Тогда взглянем на следующую ситуацию: сервер отправляет пакеты, неожиданно появился сбой и 1000 были уничтожены, он отправил 1001 пакет и продолжает передачу дальше, не зная что предыдущие не дошли до клиента, клиент принял 1001 пакет и заметил, что не хватает 1000 пакетов. Дальше единственный выход, это сказать серверу что бы тот остановился(за это время сервером может быть отправлено еще 100 пакетов) и начать передавать ему информацию о потерянных пакетах, что тоже довольно проблематично, т.к. некоторые из них могут опять потеряться)

Собственно вопрос в том, стоит ли пытаться сделать что-нибудь на основе подобной системы или же лучше остановиться на стандартной.

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

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