Интернет решения от доктора Боба | страница 2
1.1. Передача файлов через Интернет
Дельфи имеет сильный набор средств для написания новых компонентов и для иллюстрации мы напишем кодирование с помощью uuencode/uudecode, xxencode/xxdecode и Base64. Мы напишем достаточно мощный компонент, который реализует данные алгоритмы. Новый компонент реализует uuencode и uudecode алгоритмы, которые могут быть использованы для передачи файлов через Интернет (ранее использовались для передачи файлов между Unix системами).
Для более утонченного способа передачи файлов смотри главу об WinInet и FTP компонентах. Эти алгоритмы кодирования файлов д в основном используются для передачи файлов в почте и группах новостей
1.1.1. UUEncode и UUDecode
Необходимость кодирования файлов при передаче является то, что в файле могут находиться любые двоичные данные, для этого файл преобразовывается в "читаемую" или "печатаемую" форму в набор из 64 символов: [`!"#$%&'()*+,-./0123456789:;<=?@ABC…XYZ[\]^_], чтобы кодированный файл прошел через различные сети и почтовые шлюзы. Эти 64 печатных символа представлены в следующей таблице.
Набор символов UEncode | |||||||
---|---|---|---|---|---|---|---|
0 ` | 8 ( | 16 0 | 24 8 | 32 @ | 40 H | 48 P | 56 X |
1 ! | 9 ) | 17 1 | 25 9 | 33 A | 41 I | 49 Q | 57 Y |
2 " | 10 * | 18 2 | 26 : | 34 B | 42 J | 50 R | 58 Z |
3 # | 11 + | 19 3 | 27 ; | 35 C | 43 K | 51 S | 59 [ |
4 $ | 12 , | 20 4 | 28 < | 36 D | 44 L | 52 T | 60 \ |
5 % | 13 – | 21 5 | 29 = | 37 E | 45 M | 53 U | 61 ] |
6 & | 14 . | 22 6 | 30 > | 38 F | 46 N | 54 V | 62 ^ |
7 ' | 15 / | 23 7 | 31 ? | 39 G | 47 O | 55 W | 63 _ |
Алгоритм выдает файл состоящий из строки заголовка, за ней несколько кодированных строк и в конце завершающая строка.
Любые строки до строки заголовка или после завершающей строки игнорируются (так как они не содержат специальных ключевых слов "begin" или "end", которые однозначно определяют заголовок и завершающую строку).
Строка заголовка начинается с ключевого слова "begin", за который следует режим файла (четыре восьмеричных цифры) и имя файла, разделенные пробелом.
Завершающая строка начинается с ключевого слова "end"
Кодированные строки располагаются между заголовком и завершающей строкой, и могут содержать максимум 61 символ, первый символ указывает размер строки и максимум 60 символов сама строка.
Первый символ строки содержит длину строки из набора символов UUEncode, для получения подлинной длины строки из кода символов вычитается 32 ($20).
Строки данных могут содержать максимум 60 символов, это означает, что первый символ строки (длина) может быть 'M' (60 символ набора символов UUEncode).
Действительные данные группируются по четыре байта.