gpt4 book ai didi

c++ - 在ARM64上组播 'no such device'?

转载 作者:行者123 更新时间:2023-12-02 09:59:53 25 4
gpt4 key购买 nike

这来自已经移植到其他硬件平台并仍在共享的可工作的旧代码库,因此对此方法进行重大更改不是一个好的解决方案。
这是ZCU111 ARM64的新端口。
Linux内核已构建为具有多播支持(CONFIG_IP_MULTICAST = y)。
这是代码的摘要:

const char *const MULTICAST_IP = "224.0.0.26";
const unsigned int BCAST_PORT = 35001;
struct ip_mreq mreq;
int optval = 1;
int optlen = sizeof(int);
int fd = socket(AF_INET,SOCK_DGRAM,0);
int flags = fcntl(fd,F_GETFL,0);
fcntl(fd,F_SETFL,flags|O_NONBLOCK);
setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&optval,optlen);
bzero(&sock_addr,sizeof(sock_addr));
sock_addr.sin_family=AF_INET;
sock_addr.sin_addr.s_addr=htonl(INADDR_ANY);
sock_addr.sin_port=htons(BCAST_PORT);
bind(fd,reinterpret_cast<const sockaddr *>(&sock_addr),sizeof(struct sockaddr_in));
mreq.imr_multiaddr.s_addr = inet_addr(MULTICAST_IP);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq))<0) PRINTF_ERROR;
PRINTF_ERROR用于打印FILE,LINE,func,strerror和errno,如下所示:
gps.cpp:93 (GetFileDescriptor) ERROR No such device 19
将IPPROTO_IP更改为IPPROTO_UDP会导致以下错误:
gps.cpp:93 (GetFileDescriptor) ERROR Protocol not available 92
我已经看过 these solutions,但不确定在这种情况下它们如何应用。
知道如何解决“无此类设备”错误吗?

最佳答案

我没有要求这个答案(找到它online),但是为了保持共享的知识,将在此处发布解决方案。
该问题似乎实质上是多播组的路由断开,可以使用以下命令解决:

route add -net 224.0.0.0 netmask 224.0.0.0 eth0

关于c++ - 在ARM64上组播 'no such device'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63192907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com