Skip to content

Модернизация протокола #10

@solkin

Description

@solkin

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions