首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Micrium中绑定广播地址

如何在Micrium中绑定广播地址
EN

Stack Overflow用户
提问于 2016-06-17 16:46:48
回答 1查看 145关注 0票数 1

我正在尝试找到一种方法,将IPv4 UDP绑定到Micrium (µC/OS-Ⅲ)中的广播地址。

尝试将套接字绑定到实际的广播地址只返回NET_SOCK_ERR_INVALID_ADDR。在NetSock_Bind调用文档中要绑定的内容列表中没有明确提到广播,也没有类似于SO_BROADCAST。这是不可能的吗?

作为最后的手段,我是否可以将广播地址添加到现有接口作为它自己的地址(这不应该弄乱ARP,因为没有人会要求它,我也不会通过它发送任何东西)?

EN

回答 1

Stack Overflow用户

发布于 2016-11-28 16:55:19

看看micrium documentation吧。遵循这些步骤,您将不会得到任何错误。

顺便说一句,如果你不使用NetApp_SetSockAddr并尝试使用NetSock_Bind绑定,你会收到发生在你身上的NET_SOCK_ERR_INVALID_ADDR

编辑:

请看下一段代码,它适合我。请注意,IP地址我手动初始化了主机的地址,并使用定义的地址NET_SOCK_ADDR_IP_V4_WILDCARD

代码语言:javascript
复制
NET_SOCK_ADDR_IPv4 host;
NET_ERR perr;

Mem_Clr(&host, sizeof(host));
host.AddrFamily = NET_SOCK_ADDR_FAMILY_IP_V4;
host.Addr = NET_UTIL_HOST_TO_NET_32(NET_SOCK_ADDR_IP_V4_WILDCARD);
host.Port = NET_UTIL_HOST_TO_NET_16(socketPort);

netSockId = NetSock_Open( NET_SOCK_PROTOCOL_FAMILY_IP_V4, 
                          NET_SOCK_TYPE_DATAGRAM,
                          NET_SOCK_PROTOCOL_UDP,
                         &perr);

if (perr != NET_SOCK_ERR_NONE)
{
    // log the error.
    return;
}

NetSock_Bind(                 netSockId,
             (NET_SOCK_ADDR*)&host,
                              NET_SOCK_ADDR_SIZE,
                             &perr);
if (perr != NET_SOCK_ERR_NONE)
{
    // log the error.
    return;
}

关于NetApp_SetSockAddr()函数,我所说的是,如果我调用它而不是手动初始化主机,它会返回您收到的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37877012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档