ВУЗ:
Составители:
61
получении сообщения она принимает соединение и запускает соответствующее
серверное приложение. Порты и соответствующие программы могут быть заданы в
файле ‘etc/inetd.conf’.
При каждом запросе на соединение, запускается новый серверный процесс. В
момент запуска соединение уже существует, гнездо задается с помощью стандартных
входного и выходного дескрипторов файлов, которые процесс немедленно может
использовать.
Конфигурирование inetd
Файл /etc/inetd.conf задает какие порты будут прослушиваться и какие
программы будут запускаться. Обычно каждая запись в этом файле занимает одну
строку. Приведем пример описания порта:
ftp stream tcp nowait root /libexec/ftpd ftpd
talk dgram udp wait root /libexec/talkd talkd
По порядку поля каждой записи имеют следующие значения:
1 указывает какой сервис обеспечивается данной программой;
2, 3 поля указывают стиль взаимодействия и протокол, который используется
прослушивающим гнездом. Второе поле должно быть именем способа
взаимодействия, переведенным в нижний регистр и без приставки SOCK_.
Третье поле должно быть именем одного из протоколов, перечисленных в
файле /etc/protocols. Обычно задается протокол tcp для потокового соединения
и udp для дейтаграмм;
4 поле должно принимать значение wait или nowait. Поле должно иметь
значение wait, если используется способ взаимодействия, не использующий
соединение или приложение является сервером, который запускается один раз
и принимает столько соединений, сколько будет запрошено. Если приложение
я
вляется многопоточным или способ взаимодействия использует соединение,
поле должно быть установлено в значение nowait;
5 поле задает с идентификатором какого пользователя должен быть запущен
процесс;
6, 7 эти поля задают запускаемую программу и аргументы запускаемого процесса.
Опции гнезд
Следующие функции используются для получения и установки опций гнезда.
Функции определены в файле <sys/socket.h>.
int getsockopt (int SOCKET, int LEVEL, int OPTNAME,
void *OPTVAL, socklen_t *OPTLEN-PTR)
Функция возвращает информацию о значении опции OPTNAME и уровня
LEVEL для гнезда SOCKET. Значение опции сохраняется в буфере, на который
указывает OPTVAL. перед вызовом в OPTLEN-PTR необходимо установить размер
буфера. При завершении выполнения это поле содержит количество байтов, в
действительности сохраненных в буфере. Для большинства опций значение имеет тип
int.
Функция возвращает 0 в случае успешного выполнения, -1 - в случае ошибки.
переменная errno может принимать следующие значения:
EBADF SOCKET не является дескриптором файла;
ENOTSOCK SOCKET не является гнездом;
ENOPROTOOPT опция OPTNAME не имеет смысла для заданного уровня LEVEL.
int setsockopt (int SOCKET, int LEVEL, int OPTNAME,
void *OPTVAL, socklen_t OPTLEN)
получении сообщения она принимает соединение и запускает соответствующее серверное приложение. Порты и соответствующие программы могут быть заданы в файле ‘etc/inetd.conf’. При каждом запросе на соединение, запускается новый серверный процесс. В момент запуска соединение уже существует, гнездо задается с помощью стандартных входного и выходного дескрипторов файлов, которые процесс немедленно может использовать. Конфигурирование inetd Файл /etc/inetd.conf задает какие порты будут прослушиваться и какие программы будут запускаться. Обычно каждая запись в этом файле занимает одну строку. Приведем пример описания порта: ftp stream tcp nowait root /libexec/ftpd ftpd talk dgram udp wait root /libexec/talkd talkd По порядку поля каждой записи имеют следующие значения: 1 указывает какой сервис обеспечивается данной программой; 2, 3 поля указывают стиль взаимодействия и протокол, который используется прослушивающим гнездом. Второе поле должно быть именем способа взаимодействия, переведенным в нижний регистр и без приставки SOCK_. Третье поле должно быть именем одного из протоколов, перечисленных в файле /etc/protocols. Обычно задается протокол tcp для потокового соединения и udp для дейтаграмм; 4 поле должно принимать значение wait или nowait. Поле должно иметь значение wait, если используется способ взаимодействия, не использующий соединение или приложение является сервером, который запускается один раз и принимает столько соединений, сколько будет запрошено. Если приложение является многопоточным или способ взаимодействия использует соединение, поле должно быть установлено в значение nowait; 5 поле задает с идентификатором какого пользователя должен быть запущен процесс; 6, 7 эти поля задают запускаемую программу и аргументы запускаемого процесса. Опции гнезд Следующие функции используются для получения и установки опций гнезда. Функции определены в файле. int getsockopt (int SOCKET, int LEVEL, int OPTNAME, void *OPTVAL, socklen_t *OPTLEN-PTR) Функция возвращает информацию о значении опции OPTNAME и уровня LEVEL для гнезда SOCKET. Значение опции сохраняется в буфере, на который указывает OPTVAL. перед вызовом в OPTLEN-PTR необходимо установить размер буфера. При завершении выполнения это поле содержит количество байтов, в действительности сохраненных в буфере. Для большинства опций значение имеет тип int. Функция возвращает 0 в случае успешного выполнения, -1 - в случае ошибки. переменная errno может принимать следующие значения: EBADF SOCKET не является дескриптором файла; ENOTSOCK SOCKET не является гнездом; ENOPROTOOPT опция OPTNAME не имеет смысла для заданного уровня LEVEL. int setsockopt (int SOCKET, int LEVEL, int OPTNAME, void *OPTVAL, socklen_t OPTLEN) 61
Страницы
- « первая
- ‹ предыдущая
- …
- 59
- 60
- 61
- 62
- 63
- …
- следующая ›
- последняя »