Linux: Полное руководство
Шрифт:
Теперь разберемся, что есть что. Сначала мы определяем некоторые макросы: номер порта, который будет прослушивать сервер, размер буфера передаваемых данных и текст запроса клиенту.
Стандартные номера портов определены в файле
Нам
Следующие переменные:
Переменная
В строке
мы создаем наш, «серверный», сокет: набор протоколов — TCP/IP, режим — с установлением соединения.
Затем мы инициализируем структуру sin:
После создания сокета и инициализации структуры sin, нужно связать наш сокет с адресом и портом сервера:
Оператор
Как и любой нормальный сервер, мы должны работать в бесконечном цикле, постоянно обрабатывая запросы клиентов. В бесконечном цикле мы:
1. получаем размер структуры client
2. создаем сокет sock2, через который будем обмениваться данными с клиентом. Если в очереди listen нет клиентов, мы переходим в состояние ожидания
3. как только подключится клиент, мы отправим ему сообщение MSG_TO_SEND
4. увеличиваем счетчик клиентов
5. получаем размер прочитанных данных, сами данные записываются в буфер buffer
6. выводим прочитанные данные на стандартный вывод
7. завершаем сеанс связи
8. закрываем сокет
Конечно, любой нормальный сервер при поступлении определенных сигналов, например, SIG_HUP, должен корректно перезапуститься или вообще завершить работу. Наш сервер этого не делает — обработку сигналов, я надеюсь, вы можете добавить сами.
Теперь мы можем откомпилировать нашу программу:
Запускаем:
Программа перешла в состояние ожидания новых клиентов.
27.3.8. Программа-клиент
Вечный. Книга V
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
рейтинг книги
Последний Паладин. Том 6
6. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Черная метка
7. Гибрид
Фантастика:
технофэнтези
аниме
фэнтези
попаданцы
рейтинг книги
Тринадцатый II
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Первый среди равных. Книга VI
6. Первый среди Равных
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Черный Маг Императора 17
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
рейтинг книги
Лекарь Империи 9
9. Лекарь Империи
Фантастика:
городское фэнтези
аниме
боевая фантастика
рейтинг книги
Технарь
1. Технарь
Фантастика:
космическая фантастика
попаданцы
рейтинг книги
Прайм. День Платы
7. Легенда
Фантастика:
боевая фантастика
рпг
рейтинг книги
Мусорщик
3. Наемник
Фантастика:
боевая фантастика
космическая фантастика
рейтинг книги