[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Передача двоичного файла

Этот пример показывает, как передать двоичный файл с одной машины на
другую, используя "сырой" ввод/вывод. Требуется передать произвольные
восьмибитные данные, такие как объектный модуль или зашифрованный
файл, и обеспечить некоторую уверенность, что файл был передан
правильно.
Этот пример состоит из двух программ, которые работают совместно с
командой cu(1). Команда cu(1) позволяет вам войти из вашей локальной
системы в удаленную. Символы, набираемые с вашего терминала,
передаются через локальную систему удаленной машине. Удаленная машина
видит локальную как обычный терминал. Проблема с передачей двоичного
файла из локальной системы в удаленную командами take(1) и put(1)
состоит в том, что некоторые байты могут быть приняты системой за
управляющие символы. Например, символ '\004' будет проинтерпретирован
как символ конца передачи (ASCII EOT). Поэтому стандартный ввод на
удаленной системе должен быть сконфигурирован с использованием функций
termios(2) для приема "сырого" ввода. Программа recv исполняется на
удаленной системе. Кроме того, при приема двоичных данных она
проверяет, что каждый блок из 128 символов был передан правильно. Для
этого используется простая байтовая контрольная сумма. Кроме того,
recv предполагает, что ввод поступает по крайней мере каждые десять
секунд. Если за это время не поступает данных, она завершается с
сообщением об истечении времени ожидания.
Программа xmit исполняется на локальной системе. Она используется для
передачи данных из локальной системы в удаленную. Эта программа
использует возможность cu(1) переадресовать вывод команды в удаленную
систему. Для передачи файла из локальной системы в удаленную,
используйте для вызова удаленной системы команду cu(1). войдите в
удаленную систему и исполните команду:
$ recv filename
Затем, в течении десяти секунд инициируйте передачу данных из
локальной системы, напечатав:
~$xmit filename
Символ тильда (~) - это команда cu(1) для интерпретации остатка
строки. Знак доллара ($) приказывает cu(1) перенаправить стандартный
вывод xmit в удаленную систему, а не на ваш терминал.
Исходные тексты xmit и recv приводятся на следующих страницах.
Файлы: xmit.c, recv.c и xmit.h
           ПЕРЕДАЧА ДВОИЧНОГО ФАЙЛА - ДОПОЛНИТЕЛЬНЫЙ ПРИМЕР
.   Надежность - контрольная сумма

.   Восьмибитные двоичные данные

.   Программа передачи: xmit.c

.   Программа приема: recv.c

.   Работа с командой cu(1):

     1.   Используйте cu(1) для вызова удаленной системы

     2.   Войдите в удаленную систему

     3.   Запустите в удаленной системе recv file

     4.   Запустите ~$xmit file в локальной системе