#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() может работать. Однако новая проблема заключается в том, что клиент может отправлять данные на сервер, а сервер также может их получать, но когда сервер отправляет данные обратно, появляется ошибка «конечная точка транспорта не подключена». Вы знаете, что может вызвать это? Спасибо за ваш ответ.