Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

 struct servent *servinfo;

 char buffer[128];

 if (argc == 1) host = "localhost";

 else host = argv[1];

2. Найдите адрес узла и сообщите об ошибке, если адрес не найден:

 hostinfo = gethostbyname(host);

 if (!host info) {

fprintf(stderr, "no host: %s\n", host);

exit(1);

 }

3. Убедитесь, что на компьютере есть сервис

daytime
:

 servinfo = getservbyname("daytime", "tcp");

 if (!servinfo) {

fprintf(stderr, "no daytime service\n");

exit(1);

 }

 printf("daytime port is %d\n", ntohs(servinfo->s_port));

4. Создайте сокет:

 sockfd = socket(AF_INET, SOCK_STREAM, 0);

5. Сформируйте адрес для соединения:

 address.sin_family = AF_INET;

 address.sin_port = servinfo->s_port;

 address.sin_addr = *(struct in_addr *)*hostinfo->h_addr_list;

 len = sizeof(address);

6. Затем подключитесь и получите информацию:

 result = connect(sockfd, (struct sockaddr *)&address, len);

 if (result == -1) {

perror("oops: getdate");

exit(1);

 }

 result = read(sockfd, buffer, sizeof(buffer));

 buffer[result] = '\0';

 printf("read %d bytes: %s", result, buffer);

 close(sockfd);

 exit(0);

}

Вы можете применять программу

getdate
для получения времени суток с любого известного узла сети.

$ ./getdate localhost

daytime port is 13

read 26 bytes: 24 JUN 2007 06:03:03 BST

$

Если вы получаете сообщение об ошибке, такое как

oops: getdate: Connection refused

или

oops: getdate: No such file or directory

причина может быть в том, что на компьютере, к которому вы подключаетесь, не включен сервис

daytime
. Такое поведение стало стандартным для большинства современных систем Linux. В следующем разделе вы увидите, как включать этот и другие сервисы.

Как это работает

При выполнении данной программы можно задать узел, к которому следует подключиться. Номер порта сервиса

daytime
определяется функцией сетевой базы данных
getservbyname
, которая возвращает сведения о сетевых сервисах таким же способом, как и при получении информации об узле сети. Программа
getdate
пытается соединиться с адресом, который указан первым в списке дополнительных адресов заданного узла. Если соединение успешно, программа считывает сведения, возвращаемые сервисом daytime, символьную строку, содержащую системные дату и время.

Интернет-демон (xinetd/inetd)

Системы UNIX, предоставляющие ряд сетевых сервисов, зачастую делают это с помощью суперсервера. Эта программа (интернет-демон xinetd или inetd) ожидает одновременно запросы на соединения с множеством адресов портов. Когда клиент подключается к сервису, программа-демон запускает соответствующий сервер. При таком подходе серверам не нужно работать постоянно, они могут запускаться по требованию.

Примечание

В современных системах Linux роль интернет-демона исполняет программа xinetd. Она заменила оригинальную UNIX-программу inetd, которую вы все еще можете встретить в более ранних системах Linux и других UNIX-подобных системах.

Программа xinetd обычно настраивается с помощью пользовательского графического интерфейса для управления сетевыми сервисами, но вы можете изменять и непосредственно файлы конфигурации программы. К ним относятся файл /etc/xinetd.conf и файлы в каталоге /etc/xinetd.d.

У каждого сервиса, предоставляемого программой xinetd, есть файл конфигурации в каталоге /etc/xinetd.d. Программа xinetd считает все эти файлы конфигурации во время запуска и повторно при получении соответствующей команды.

Далее приведена пара примеров файлов конфигурации xinetd, первый из них для сервиса

daytime
.

# По умолчанию: отключен

# Описание: сервер daytime. Это версия tcp.

service daytime

{

 socket_type = stream

 protocol = tcp

 wait = no

 user = root

 type = INTERNAL

 id = daytime-stream

 FLAGS = IPv6 IPv4

}

Следующий файл конфигурации предназначен для сервиса передачи файлов.

# По умолчанию: отключен

# Описание:

# FTP-сервер vsftpd обслуживает FTP-соединения. Он использует

# для аутентификации обычные, незашифрованные имена пользователей и

# пароли, vsftpd спроектирован для безопасной работы.

#

# Примечание: этот файл содержит конфигурацию запуска vsftpd для xinetd.

# Файл конфигурации самой программы vsftpd находится в

# /etc/vsftpd.conf

service ftp {

# server_args =

# log_on_success += DURATION USERID

# log_on_failure += USERID

# nice = 10

 socket_type = stream

 protocol = tcp

Поделиться:
Популярные книги

Старый, но крепкий 8

Крынов Макс
8. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Старый, но крепкий 8

Аспирант

Поселягин Владимир Геннадьевич
3. Рунный маг
Фантастика:
боевая фантастика
4.50
рейтинг книги
Аспирант

Зодчий. Книга III

Погуляй Юрий Александрович
3. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга III

#Бояръ-Аниме. Газлайтер. Том 13

Володин Григорий Григорьевич
13. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
фэнтези
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 13

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Клан

Русич Антон
2. Долгий путь домой
Фантастика:
боевая фантастика
космическая фантастика
5.60
рейтинг книги
Клан

Твое сердце будет разбито. Книга 1

Джейн Анна
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Твое сердце будет разбито. Книга 1

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3

Солнечный флот

Вайс Александр
4. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Солнечный флот

Воронцов. Перезагрузка. Книга 4

Тарасов Ник
4. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 4

Кодекс Охотника. Книга II

Винокуров Юрий
2. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
боевая фантастика
юмористическое фэнтези
5.00
рейтинг книги
Кодекс Охотника. Книга II

Изгой Проклятого Клана. Том 5

Пламенев Владимир
5. Изгой
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 5

Личный аптекарь императора. Том 6

Карелин Сергей Витальевич
6. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 6

Звездная Кровь. Экзарх II

Рокотов Алексей
2. Экзарх
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Звездная Кровь. Экзарх II