8.2.1. Пример передачи файла.
Передатчик Приемник
----------------------------------------------
"rz",
ZRQINIT(0)
ZRINIT
ZFILE
ZRPOS
----------------------------------------------
ZDATA date ...
[ZACK,ZNAK]
L----------------------------------------------
ZEOF
ZRINIT
ZFIN
ZFIN
"OO"
8.2.2. Пример кодировщика данных передатчика.
ZSend_Byte( current_byte )
registers current_byte ;
{
static last_byte ;
switch( current_byte & 0X7F )
{
case 13 : if ( last_byte & 0X7F ) != '@' goto send;
case 16 :
case 17 :
case 19 :
case 24 : Send_Byte( ZDLE );
current_byte ^= 0X40;
send:
default : Send_Byte( last_byte = current_byte );
}
} // ZSend_Byte
8.3 Содержание фрейма ZFILE.
Имя файла
при этом pathname преобразуется в filename и посылается как
завершенная нулем ASCII строка следующего вида:
- буквы должны быть преобразованы в маленькие;
- приемник должен принимать большие и маленькие буквы;
- когда передача осуществляется между различными ОС
имя файла должно быть приемлемо для обоих.
Длинна
длинна файла сохраняется как цифровая строка содержащая
количество байт в файле.Zmodem использует длинну файла
только для оценки.Она может быть использована для оценки
времени передачи и сравнения с количеством свободного места
на диске.Файл может увеличиваться в момент передачи,но все
данные будут посланы.
Модифицированная дата
Отделяется пробелом от длинны.Модифицированная дата посы-
лается как восьмеричное число времени в секундах от 1.1.70
до времени последней модификации файла.Нулевая дата озна-
чает,что дата неизвестна и принимается равной текущей.
Файлова мода
Отделяется пробелом от даты.Файловая мода сохраняется как
восьмериченое число.rs(1) проверяет файловую моду на
0x8000 бит,который определяет unix тип файла.Такие файлы
посылаются от другой unix системы.Такой файл не передается
иначе.
Серийный номер
Отделяется пробело от моды.Серийный номер передается как
восьмеричное число.Программа которая не имеет номера,
устанавливает этот параметр равным нулю.
*Оставшееся количество файлов
Это поле содержит десятичное число файлов,для отправки,
включая текущий.
*Оставшееся количество байт
Это поле содержит десятичное число оставшегося количества
байт включая текущий файл.
Тип файла
Кодируется десятичным числом.Приемник использует это поле
для оптимизации.
0 - последовательный файл не специального типа;
1 - другой тип.
Информация завершается нулем.Если только имя файла пере-
дается,то двумя нулями.Длинна информации должна быть
меньше 1к.Типичная длинна 64 байта.
|