Как настроить путь для UDP в доменном сокете UNIX?

#linux-kernel #udp #serversocket

#linux-ядро #udp #serversocket

Вопрос:

Я новичок в программировании сокетов. Я пытаюсь установить доменный сокет UNIX с помощью DATAGRAM. Некоторое время я просматриваю информацию о конфигурации sun_path в struct sockaddr_un, похоже, что источников недостаточно, чтобы помочь мне.

Я создал 3 файла: unix_socket.c (предоставляет интерфейс для подключения к сокетам), udp_server.c и udp_client.c, все они расположены в каталоге «/home/ Socket«. Когда я устанавливаю sun_path как «home / Socket», серверная сторона всегда выдает ошибку «Адрес уже используется«. Я также пытался использовать «LocalSocket» и «echo_socket», но клиентская сторона всегда выдает ошибку «Нет такого файла или каталога«.

Я понятия не имею, что происходит. Кто-нибудь может помочь мне это исправить? Действительно ценю.

Большое вам спасибо

Ответ №1:

Это /home/Socket уже папка, поэтому она не может быть перезаписана сокетом UNIX (думайте об этом как о специальном файле). Попробуйте другой путь, например /home/Socket/mysocket .

Вы также должны проверить справочную страницу bind(2) и приведенный на ней пример.

Комментарии:

1. Теперь bind() может работать. Однако новая проблема заключается в том, что клиент может отправлять данные на сервер, а сервер также может их получать, но когда сервер отправляет данные обратно, появляется ошибка «конечная точка транспорта не подключена». Вы знаете, что может вызвать это? Спасибо за ваш ответ.