Могу ли я подключить сокет перед использованием sendmsg ()? - PullRequest
0 голосов
/ 27 мая 2009

Я пытаюсь передать fd между процессами, и я нашел пример кода, такой как portlisten . В этом примере recvmsg() может принять связанный сокет в качестве параметра (и оставить msghdr.msg_name как NULL), но sendmsg() не может - он должен занять sockaddr* в msghdr.msg_name.

Я попытался изменить программу, подключившись первым, но не смог, и нашел комментарий как /* doesn't do anything at the moment, но я не понимаю, почему.

Является ли ограничение sendmsg () тем, что он не может принимать уже подключенный сокет в качестве параметра?

Ответы [ 2 ]

1 голос
/ 27 мая 2009

Посмотрите на исходный код библиотеки. Я не могу опубликовать ссылку, потому что я новый пользователь, но вы найдете ее в Google.

1 голос
/ 27 мая 2009

со страницы руководства sendmsg:

Функция sendmsg () отправляет сообщение через сокет в режиме соединения или в режиме без соединения. Если сокет находится в режиме без установления соединения, сообщение должно быть отправлено по адресу, указанному в msghdr. Если сокет находится в режиме соединения, адрес назначения в msghdr должен игнорироваться.

То есть, если вы используете TCP-соединение, адрес назначения в msghdr игнорируется .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...