UDP点对点通信如何改为UDP广播通信

2019-03-23 15:01发布

我用正点原子的板子试网口程序,UDP点对点通信已成功。想改为广播方式,把目标IP地址设为255.255.255.255但是通信不成功,电脑可以收到单片机发的数据,而单片机收不到电脑发的数据。请高手指教,还要改其他地方吗?谢谢!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
chenbingjy
2019-03-24 10:00
//UDP测试
void udp_demo_test1(void)
{
        err_t err;
        //struct udp_pcb *udppcb;          //定义一个TCP服务器控制块
        struct ip_addr rmtipaddr;          //远端ip地址
       
        u8 *tbuf;
        u8 key;
        u8 res=0;               
        u8 t=0;
       
        udp_demo_set_remoteip();//先选择IP
          
        tbuf=mymalloc(SRAMIN,200);        //申请内存
        if(tbuf==NULL)return ;                //内存申请失败了,直接退出
       
       
       
        udppcb=udp_new();
        if(udppcb)//创建成功
        {
                IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);
                //err=udp_connect(udppcb,&rmtipaddr,UDP_DEMO_PORT);//UDP客户端连接到指定IP地址和端口号的服务器
                //err=udp_connect(udppcb,IP_ADDR_ANY,UDP_DEMO_PORT);//UDP客户端连接到指定IP地址和端口号的服务器
                err=udp_connect(udppcb,IP_ADDR_BROADCAST,UDP_DEMO_PORT);//UDP客户端连接到指定IP地址和端口号的服务器
                if(err==ERR_OK)
                {
                        err=udp_bind(udppcb,IP_ADDR_ANY,UDP_DEMO_PORT);//绑定本地IP地址与端口号
                       
                        //err=udp_bind(udppcb,IP_ADDR_BROADCAST,UDP_DEMO_PORT);//绑定本地IP地址与端口号
                        if(err==ERR_OK)        //绑定完成
                        {
                                udp_recv(udppcb,udp_demo_recv,NULL);//注册接收回调函数
                               
                        }else res=1;
                }else res=1;               
        }else res=1;
       
}
我把程序改成这样,电脑能收到单片机的数据,单片机收不到电脑发的数据。

一周热门 更多>