Ошибка «Операция не поддерживается» при использовании sendto api с многоадресной рассылкой на сокете FreeBSD - PullRequest
0 голосов
/ 11 июля 2019

У меня странные проблемы.

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

Вот пример кода.

// bind socket
bind(sd, (const struct sockaddr *) &saddr, sizeof(saddr));

// send, and address is "ff14::5", port:42557
sendto(socket_id, data, length, 0, (const struct sockaddr *) &saddr, sizeof(saddr));

Это хорошо работает на Linux.

Но когда я пытаюсь использовать этот код на сокете FreeBSD, возникает ошибка: «Операция не поддерживается».

Я искал соответствующую проблему в Google, и нашел ниже сообщение https://lists.freebsd.org/pipermail/freebsd-net/2004-February/003053.html

В этой теме рассказывается о проблеме связывания с многоадресной рассылкой и использовании sendto().

Я понимаю, почему во FreeBSD возникла ошибка из этого потока, но я не могу найти решение этой проблемы.

Без bind(), sendto() хорошо работает

...