我有一些奇怪的问题。
我想通过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()
效果很好