Не удалось подключить клиентский сокет uds

Я новичок в сокетах домена unix, поэтому я попробовал код beej для клиента и сервера из: http://beej.us/guide/bgipc/html/multi/unixsock.html

Сервер "работает", но при вызове функции "подключение" клиент выдает ошибку. Я получаю сообщение об ошибке «Недопустимый аргумент».

любой совет?


person user3206874    schedule 25.12.2015    source источник


Ответы (2)


попробуйте memset при создании клиентского сокета

struct sockaddr_un sin;
memset(&sin, 0, sizeof(sin));
person Dass    schedule 29.12.2015

На самом деле у меня была такая же проблема с этим учебником, проблема в:

len = strlen(remote.sun_path) + sizeof(remote.sun_family);

В этом назначении отсутствует нулевой символ в конце sun_path, поэтому вам просто нужно добавить его к выражению справа:

len = strlen(remote.sun_path) + sizeof(remote.sun_family) + 1;

В моем случае вызов для подключения был выполнен успешно с этим изменением.

person Cristian David    schedule 13.06.2018