12 str_cli(stdin, sockfd); /* выполняет всю работу */
13 exit(0);
14 }
6
Теперь структурой адреса сокета, которая должна содержать адрес сервера, будет структура
sockaddr_un
.
7
Первый аргумент функции
socket
—
AF_LOCAL
.
8-10
Код для заполнения структуры адреса сокета идентичен коду, показанному для сервера: инициализация структуры нулем, установка семейства протоколов
AF_LOCAL
и копирование полного имени в элемент
sun_path
.
12
Функция
str_cli
— та же, что и раньше (в листинге 6.2 представлена последняя разработанная нами версия).
15.6. Клиент и сервер дейтаграммного доменного протокола Unix
Теперь мы перепишем наши клиент и сервер UDP из разделов 8.3 и 8.5 с использованием сокетов. В листинге 15.5 показан сервер, который является модификацией листинга 8.1.
Две структуры адреса сокета относятся теперь к типу
sockaddr_un
.
7
Для создания дейтаграммного доменного сокета Unix первый аргумент функции
socket
должен иметь значение
AF_LOCAL
.
8-12
Константа
UNIXDG_PATH
определяется в заголовочном файле
unp.h
как
/tmp/unix.dg
. Сначала мы вызываем функцию
unlink
, чтобы удалить полное имя в случае, если оно сохранилось после предыдущего запуска сервера, а затем инициализируем структуру адреса сокета перед вызовом функции
bind
. Ошибка при выполнении функции
unlink
— это нормальное явление.
13
Используется та же функция
dg_echo
(см. листинг 8.2).
В листинге 15.6 представлен эхо-клиент дейтаграммного доменного протокола Unix. Это модификация листинга 8.3.