ВУЗ:
Составители:
49
gethostbyname и gethostbyaddr не будут закрывать базу данных (что обычно
происходит).
struct hostent * gethostent (void)
Возвращает следующую запись из базы данных хостов. Если предыдущая
запись была последней, возвращается нулевой указатель.
void endhostent (void)
Эта функция закрывает базу данных.
Интернет-порты
Номер порта в пространстве имен определяет гнездо на конкретной машине.
Порты могут иметь номера от 0 до 65535. Номера портов, меньшие, чем
IPPORT_RESERVED зарезервированы для стандартных серверов таких, как finger и
telnet. Существует база данных, которая хранит значения зарезервированных портов.
Для получения сервисов, закрепленных за портами можно использовать функцию
getservbyname.
При разработке сервера, который не относится к стандартным серверам,
определенным в базе данных, для него необходимо выбрать номер порта. Для этого
используются порты, значения которых превышают IPPORT_USERRESERVED. Эти
порты зарезервированы для серверов и не могут генерироваться операционной
системой. При использовании гнезда без указания его адреса операционная система
генерирует номер порта. Этот номер выбирается из диапазона IPPORT_RESERVED -
IPPORT_USERRESERVED.
В адресном пространстве интернет допустимо использование двух различных
гнезд, имеющих один и тот же номер, но только в том случае, если они не предпримут
попытку взаимодействовать с тем же адресом гнезда (включающим адрес хоста и номер
порта). Обычно необходимости в дублировании номера порта нет за исключением
случаев, когда этого требует высокоуровневый сетевой протокол. В этом случае гнездо
необходимо создавать с использованием опции SO_REUSEADDR.
База данных сервисов
База данных, которая хранит информацию о сервисах обычно расположена в
файле ‘/etc/services’ или на сервере имен. С помощью следующих структур и функций,
определенных в заголовочном файле <netdb.h> можно получить доступ к этой базе
данных.
struct servent {
char *s_name;
char **s_aliases;
int s_port;
char *s_proto;
};
s_name имя сервиса;
s_aliases альтернативные имена сервиса. Задаются в виде массива строк.
Массив завершается нулевым указателем;
s_port номер порта сервиса;
s_proto имя протокола, используемого с сервисом.
struct servent * getservbyname (const char *NAME,
const char *PROTO)
Функция возвращает информацию о сервисе, называющемся NAME и
использующего протокол PROTO. Если сервис не найден, возвращается нулевой
указатель. Функция может использоваться как для серверов, так и для клиентов;
серверы могут использовать ее для определения того, какой порт следует
прослушивать.
gethostbyname и gethostbyaddr не будут закрывать базу данных (что обычно происходит). struct hostent * gethostent (void) Возвращает следующую запись из базы данных хостов. Если предыдущая запись была последней, возвращается нулевой указатель. void endhostent (void) Эта функция закрывает базу данных. Интернет-порты Номер порта в пространстве имен определяет гнездо на конкретной машине. Порты могут иметь номера от 0 до 65535. Номера портов, меньшие, чем IPPORT_RESERVED зарезервированы для стандартных серверов таких, как finger и telnet. Существует база данных, которая хранит значения зарезервированных портов. Для получения сервисов, закрепленных за портами можно использовать функцию getservbyname. При разработке сервера, который не относится к стандартным серверам, определенным в базе данных, для него необходимо выбрать номер порта. Для этого используются порты, значения которых превышают IPPORT_USERRESERVED. Эти порты зарезервированы для серверов и не могут генерироваться операционной системой. При использовании гнезда без указания его адреса операционная система генерирует номер порта. Этот номер выбирается из диапазона IPPORT_RESERVED - IPPORT_USERRESERVED. В адресном пространстве интернет допустимо использование двух различных гнезд, имеющих один и тот же номер, но только в том случае, если они не предпримут попытку взаимодействовать с тем же адресом гнезда (включающим адрес хоста и номер порта). Обычно необходимости в дублировании номера порта нет за исключением случаев, когда этого требует высокоуровневый сетевой протокол. В этом случае гнездо необходимо создавать с использованием опции SO_REUSEADDR. База данных сервисов База данных, которая хранит информацию о сервисах обычно расположена в файле ‘/etc/services’ или на сервере имен. С помощью следующих структур и функций, определенных в заголовочном файлеможно получить доступ к этой базе данных. struct servent { char *s_name; char **s_aliases; int s_port; char *s_proto; }; s_name имя сервиса; s_aliases альтернативные имена сервиса. Задаются в виде массива строк. Массив завершается нулевым указателем; s_port номер порта сервиса; s_proto имя протокола, используемого с сервисом. struct servent * getservbyname (const char *NAME, const char *PROTO) Функция возвращает информацию о сервисе, называющемся NAME и использующего протокол PROTO. Если сервис не найден, возвращается нулевой указатель. Функция может использоваться как для серверов, так и для клиентов; серверы могут использовать ее для определения того, какой порт следует прослушивать. 49
Страницы
- « первая
- ‹ предыдущая
- …
- 47
- 48
- 49
- 50
- 51
- …
- следующая ›
- последняя »