-
Notifications
You must be signed in to change notification settings - Fork 0
Description
После отправки блока 0x01 с названием и размером файла отправляемой стороной, принимающая сторона должна убедиться в наличии такого количества свободного пространства и проверить, нет ли случайно уже такого файла (на предмет докачки). Если объём позволяет, принимающая сторона отправляет блок 0x04 с отступом в байтах или нулём, если нужно качать полностью. После этого отправляющая сторона шлёт начинку файла с того места, откуда её попросили. Если файл на принимаемой стороне уже есть в полном объёме, шлётся блок 0x02, который всегда шлётся с успешным окончанием. Если места не оказалось, шлётся блок 0x03, который всегда сообщает об ошибках на удалённой стороне. В том числе, когда произошла ошибка чтения файла при отправке - на принимающую сторону должен прийти не блок 0x02 об успехе, а 0x03 с возможным описанием или индексом ошибки.
Кроме того, предлагаю ввести начальный блок 0x00, в котором присутствует версия протокола (целое число) и строка - название клиента. Этот пакет шлётся сразу после установки соединения обоими сторонами. Таким образом, если протокол несовместим (а только тогда меняется число), то дальше и разговаривать программам не о чем и с уведомлением соединение закрывается (в таком случае, правда, можно запускать передачу данных по версии протокола 1, то есть текущей, чтобы файл передать можно было в любом случае). Если всё успешно, программы показывают строчку, составленную из информации удалённой стороны, вроде: "Вас обслуживает sfn версии 1.3".