Основы программирования в Linux
Шрифт:
Вам также нужно модифицировать серверную программу, ждущую подключений на выбранном вами номере порта. Далее приведена откорректированная программа сервера server2.c.
1. Вставьте необходимые заголовочные файлы и задайте переменные:
2. Создайте неименованный сокет для сервера:
3. Дайте имя сокету:
С этой строки и далее текст примера точно совпадает с программным кодом в файле server1.c. Выполнение client2 и server2 продемонстрирует то же поведение, что и при запуске программ client1 и server1.
Как это работает
Серверная программа создает сокет домена
Если вы хотите разрешить серверу устанавливать соединения с удаленными клиентами, необходимо задать набор IP-адресов, которые разрешены. Можно применить специальное значение
Порядок байтов на компьютере и в сети
Если запустить приведенные версии серверной и клиентской программ на машине на базе процессора Intel под управлением Linux, то с помощью команды
Прежде чем испытывать последующие примеры этой главы, убедитесь в том, что завершено выполнение серверных программ-примеров, поскольку они будут конкурировать при приеме соединений клиентов, и вы увидите вводящие в заблуждение результаты. Удалить их все (включая те, что будут приведены позже в этой главе) можно с помощью следующей команды:
Вы сможете увидеть номера портов, присвоенные соединению сервера с клиентом. Локальный адрес отображает сервер, а внешний адрес — удаленного клиента. (Даже если клиент размещен на той же машине, он все равно подключается через сеть.) Для четкого разделения всех сокетов порты клиентов обычно отличаются от сокета сервера, ожидающего запросы на соединения, и уникальны в пределах компьютера.
Отображается локальный адрес (сокет сервера) 1574 (или может выводиться имя сервиса
Для того чтобы компьютеры разных типов могли согласовать значения многобайтовых целых чисел, передаваемых по сети, необходимо определить сетевой порядок передачи байтов. Перед передачей данных клиентские и серверные программы должны преобразовать собственное внутреннее представление целых чисел в соответствии с принятым в сети порядком следования байтов. Делается это с помощью функций, определенных в заголовочном файле netinet/in.h. К ним относятся следующие:
Я уже царь. Книга XXIX
29. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
рейтинг книги
Мой муж – чудовище! Изгнанная жена дракона
Любовные романы:
любовно-фантастические романы
рейтинг книги
Виктор Глухов агент Ада. Компиляция. Книги 1-15
Виктор Глухов агент Ада
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
попаданцы
рейтинг книги
Мастер порталов
8. Гибрид
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
рейтинг книги
Княжий пир
1. Княжеский пир
Фантастика:
фэнтези
рейтинг книги
Ученик. Книга вторая
2. Ученик
Фантастика:
фэнтези
рейтинг книги
Экспансия – I
10. Штирлиц
Детективы:
политические детективы
рейтинг книги
Император
Проза:
историческая проза
рейтинг книги
Возвращение
5. Другая сторона
Фантастика:
боевая фантастика
рейтинг книги
Статьи
Документальная литература:
публицистика
рейтинг книги
Газлайтер. Том 2
2. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
рейтинг книги
Вечный. Книга VII
7. Вечный
Фантастика:
боевая фантастика
рпг
попаданцы
рейтинг книги
Графиня Де Шарни
Приключения:
исторические приключения
рейтинг книги