Сокеты UDP с подтверждением. Пример на Perl. Гарантированная доставка данных по UDP

4 апреля 2013 г. 21:40 perl   UDP  

Fig2_UDPwork.jpgОбычно датаграммный UDP используется там, где не нужна гарантия принятия данных: аудио- и видео-потоки, онлайн-игры, ip-телефония и т.п.: даже если пару десятков байт потеряется в таком потоке, пользователь не заметит ощутимой разницы, максимум испытает какой-нибудь глюк и успешно продолжит получать риал-тайм информацию.

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

В примере я покажу следующий вариант организации протокола: допустим есть сервер, который должен передать клиенту определённые данные. Данные - это в нашем случае будут просто строки с текстом "Сообщение №х". Клиент отправляет серверу число пакетов, которое он хотел бы получать, а тот в ответ ему кидает пакеты.

Ну а дальше начинается самое интересное.