У меня странные проблемы.
Я хочу отправлять данные, используя многоадресный адрес на сокете 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()
хорошо работает