char FAR * s_proto;
};
Элементы структуры заполняются при вызове функции getservbyname. Вот ее прототип:
struct servent FAR * PASCAL FAR getservbyname(const char FAR * name,
const char FAR * proto) ;
В табл. 2 приведены описания элементов структуры servent.
Таблица 10.2. |
Элементы структуры, содержащей информацию о сетевой службе |
Элемент |
Описание |
s_name s_aliases s_port s_proto |
Официальное название службы, например Finger. Список псевдонимов данной сетевой службы. Номер порта протокола данной службы, равный 79 для Finger. Название протокола, работающего с этой службой, например TCP илиUDP. |
При вызове функции getservbyname указываются два параметра — указатель на имя службы и указатель на название протокола. Указатель на название протокола может равняться NULL. В этом случае будет выбран протокол по умолчанию. В случае QFinger первый параметр указывает на строку «finger», а второй равен NULL — программе нужен стандартный протокол.
Функция getservbyname исследует базу данных с информацией о сетевых службах. На персональных компьютерах это обычно ASCII-файл под названием SERVICES. Его фрагмент приводится ниже. Файл состоит из трех колонок. Первая содержит наименование сетевой службы, вторая определяет номер порта и протокол, а в третьей приведены соответствующие службе псевдонимы:
# Network services. Internet style
#
#name port/protocol aliases
#
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/tcp users
day time 13/tcp
daytime 13/udp
netstat 15/tcp
qotd 17/tcp quote
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp timserver
time 37/udp timserver
rip 39/udp resource # resource location
nameserver 42/tcp name # IEN 116
whois 43/tcp nicname
domain 53/tcp nameserver # name-domain
server
domain 53/udp nameserver
mtp 57/tcp # deprecated
tftp 69/udp
rje 77/tcp netrjs
finger 79/tcp
link 87/tcp ttylink
supdup 95/tcp
hostnames 101/tcp hostname # usually from
sri-nic
ns 105/tcp # ph name server
pop2 109/tcp postoffice2
pop3 110/tcp postoffice
sunrpc 111/tcp portmapper
sunrpc 111/udp portmapper
auth 113/tcp authentication
sftp 115/tcp
uucp-path 117/tcp
nntp 119/tcp readnews untp
# USENET News Transfer Protocol
Примечание: Спецификация Winsock не затрагивает вопросов, касающихся базы данных по сетевым службам. На персональных компьютерах, однако, база данных чаще всего хранится в виде текстового файла SERVICES, находящегося в том же каталоге, что и WINSOCK.DLL
Рассмотрим первые две записи файла SERVICES. Вы видите, что служба echo с официальным номером порта 7 может использоваться как с протоколом TCP, так и с протоколом UDP. Служба или сервер echo просто возвращает все выданные клиентом данные обратно в том же виде. Предположим, что мы вызвали getservbyname со следующими аргументами:
getservbyname("echo", NULL) ;
getservbyname обратится к файлу SERVICES и найдет в нем первую строчку с именем echo (с протоколом TCP). Структура информации о сетевой службе после вызова будет содержать следующие элементы:
s_name[] = "echo" ;
s_aliases = NULL;
s_port = 7 ;
s_proto[] = "tcp";
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.