猫鼬广播监听器Unix

时间:2019-03-21 14:53:29

标签: c linux mongoose udp broadcasting

我正在尝试使用C / C ++中的cesanta猫鼬收听广播的udp消息。

mgr = new mg_mgr();
struct ip_mreq group;

mg_mgr_init(mgr, this);
{
    char listen[256];
    snprintf(listen, sizeof(listen), "udp://%d", _port);
    nc = mg_bind(mgr, listen, ev_handler);
}

if (nc == NULL)
{
    strerror(errno);
    return errno;
}

group.imr_multiaddr.s_addr = inet_addr("0.0.0.0");
group.imr_interface.s_addr = inet_addr(INADDR_ANY);
if (setsockopt(nc->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&group, sizeof(group)) < 0)
{
    strerror(errno);
    return errno;
}
while(true)
mg_mgr_poll(mgr, 0);

它在Windows上可以正常工作,并且我能够捕获消息。 但是它在setockopt的linux(Debian)上失败,错误22(无效参数)。

我认为猫鼬库是跨平台的,在这里我可能会缺少某些东西吗? 我读到IP_ADD_MEMBERSHIP选项可能会出现问题,但是我不知道如何设置套接字选项以接收广播。

0 个答案:

没有答案