当前位置: 代码迷 >> 单片机 >> 关于uip中接收UDP广播数据包的有关问题
  详细解决方案

关于uip中接收UDP广播数据包的有关问题

热度:27   发布时间:2016-04-28 15:41:26.0
关于uip中接收UDP广播数据包的问题
    有A,B两个板子,A只通过端口3000进行UDP广播,IP地址为192.168.1.52。B通过2000端口既要接收A的广播数据,又要通过这个端口将自己的数据广播出去,B的IP地址为192.168.1.51。我的思路如下:
    如果B要广播,则绑定一个255.255.255.255的IP和一个端口进行广播,初始化程序如下:
  void myudp_init(void)           //绑定设置
        {
          uip_ipaddr_t ipaddr;//定义IP类型变量
          uip_ipaddr(ipaddr,255,255,255,255);                  //上位机IP  
          if(myudp_conn1!=NULL)
          { 
            uip_udp_remove(myudp_conn1);//如果连接已经建立,则删除之
          }
          myudp_conn1=uip_udp_new(&ipaddr,HTONS(8000));//连接到远端口
          if(myudp_conn1!=NULL)
          {
            uip_udp_bind(myudp_conn1,HTONS(2000));//绑定本地移动站端口2000,即2000--->8000发送数据
          }
        }
如果B要接收A的广播数据,则直接绑定B的IP地址和一个端口,初始化程序如下:
   void myudp_init2(void)                        
         {
           uip_ipaddr_t ipaddr1;
           uip_ipaddr(ipaddr1,192,168,1,52);   A的IP地址
           if(myudp_conn2!=NULL)
            {
                  uip_udp_remove(myudp_conn2);
                }
           myudp_conn2=uip_udp_new(&ipaddr1,HTONS(3000));
           if(myudp_conn2!=NULL)
            {
                 uip_udp_bind(myudp_conn2,HTONS(2000));
                }
         }
 这也是我不确定的地方,因为开启了广播支持,不知道这种单播的绑定还行不行,程序里也是这样的,但就是是接收不到A的广播数据,但是B的广播数据可以发送出去。
应用程序里是这样的:
void myudp_appcall(void) 
if(uip_udp_conn->rport==HTONS(3000))          
     { 
                    
       if(uip_newdata())                
        {    //=================================标记:此处程序不进入执行                                 
  相关解决方案