Селекторная строка (selector string) определяет выбранный пользователем пункт меню или текстовый документ (а также данные другого типа, например сценарии, исполняемые программы или запросы к базам данных). Пустая селекторная строка, содержащая только <CR><LF>, приводит к возвращению от сервера корневого меню по умолчанию.
Если сервер отошлет меню назад, клиент выводит пользователю список пунктов меню. Однако в меню содержится намного больше информации, чем просто названия пунктов. Каждый посланный сервером пункт меню состоит из последовательности полей, разделенных знаками табуляции. В этих полях содержится:
■ Тип пункта меню и его название
■ Селекторная строка, которую нужно послать на сервер, чтобы получить этот пункт меню (обычно указывается тип пункта вместе с именем файла или каталога)
■ Имя хоста, содержащего данный пункт меню
■ Номер порта для доступа к хосту
Содержимое отдельных полей можно увидеть самостоятельно. Ниже показан пример сырого, или необработанного, взаимодействия с сервером gopher компании GES. Обращение происходит по
> telnet gopher.jvnc.net 70
Trying 128.121.50.10 ... Connected to nicol.jvnc.net
Escape character is '^}' .
0About this gopher 0/0about nicol.jvnc.net 70
7Search GES Gopher Tree 7/ts nicol.jvnc.net 70
1GES 1/GES nicol.jvnc.net 70
1Educational Services 1/Educational_Services nicol.jvnc.net 70
1Internet Resources 1/Internet_Resources nicol.jvnc.net 70
1Medical Resources 1/Medical_Resources nicol.jvnc.net 70
1Gophers Hosted by GES 1/Hosted nicol.jvnc.net 70
1Other Interesting Gophers 1/Other_Interesting_Gophers nicol.jvnc.net 70
1Publishers Online 1/Publishers_Online nicol.jvnc.net 70
1WAIS Based Information 1/WAIS_Based_Information nicol.jvnc.net 70
UnterNIC / internic.net 70
.
Connection closed by foreign host
Рассмотрим первый элемент списка. 0About this gopher указывает, что данный пункт — это текстовый файл, и определяет его название,
Следующий столбец определяет хост, хранящий данный пункт меню. Мы соединились с
Следующие несколько элементов описывают подкаталоги домашнего каталога сервера gopher системы
Отметим, что сервер gopher сообщает о завершении пересылки меню, посылая строку, которая содержит только символ точки. Когда пересылается текстовой файл, символ точки используется также для указания на конец файла.
18.8 Файл .names
Простейший сервер gopher можно организовать, сконфигурировав в программе сервера расположение домашнего каталога и запустив эту программу. Главное меню сервера будет содержать список имен файлов и подкаталогов домашнего каталога. Если будет выбран один из подкаталогов, то соответствующий список также будет хранить имена файлов и подкаталогов.
Чтобы заменить созданные имена файлов и каталогов на более содержательные названия, администратор сервера создает в каждом каталоге сервера gopher специальный файл
# Каталог верхнего уровня
Path = 0/0about
Name = About this gopher
Numb = 1
Path = 1/GES
Name = GES
Numb = 3
Path = 1/Educational_Services
Name = Educational Services
Numb = 4
Path = 1/Internet_Resources
Name = Internet Resources
Numb = 5
Пункты меню для соединения с удаленным сервером gopher или для запуска приложений перечислены в файле
Type = 7
Name = Search GES Gopher Tree
Path = 7/ts
Host = nicol.jvnc.net
Port = 70
Numb = 2
Type = 1
Name = InterNIC
Path = /
Host = internic.net
Port = 70
Numb = 11
Как показано на рис. 18.4, меню