打印

uip中怎么接收不了UDP广播数据包?

[复制链接]
6541|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
337zhang|  楼主 | 2012-9-12 17:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做了A,B两个板子,A地址是192.168.1.52,通过端口3000只广播数据,B地址是192.168.1.51,即通过端口2000接收A的广播数据,又自己发送广播数据。现在的情况是B只能发送广播的数据,却接收不了A广播的数据。B里面程序绑定的端口如下,请大侠们帮我分析下哪里设置的不对,谢谢了。
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发送数据
          }
        }

   void myudp_init2(void)                        
         {
           uip_ipaddr_t ipaddr1;
           uip_ipaddr(ipaddr1,192,168,1,51);   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));
                }
         }
在应用程序里面:
void myudp_appcall(void)
if(uip_udp_conn->rport==HTONS(3000))         
     {
                    
       if(uip_newdata())               
        {    ===============================标记:此处程序不执行行                                 
            UDP_newdata2();  
      }
     }
else  if(uip_udp_conn->rport==HTONS(8000))
{
      myudp_init();                 
      if((uip_newdata()))
        {
           UDP_newdata1();   
     }
}
我调试的时候,程序进入=====标记的地方执行,也就是说uip_newdata()一直为假,而8000端口那个就好使,是不是接收A广播数据包的时候绑定设置不对呢?各位帮忙看看吧,谢谢了
沙发
337zhang|  楼主 | 2012-9-13 00:31 | 只看该作者
没人指点下吗?:'(

使用特权

评论回复
板凳
lvjing880907| | 2012-9-13 14:29 | 只看该作者
我帮你顶一下吧!

使用特权

评论回复
地板
rongwinzip| | 2012-9-13 21:47 | 只看该作者
跟你的网络芯片寄存器设置也有关系

使用特权

评论回复
5
337zhang|  楼主 | 2012-9-14 17:27 | 只看该作者
3# lvjing880907
谢谢了,还是好人多啊,嘿嘿

使用特权

评论回复
6
337zhang|  楼主 | 2012-9-14 17:37 | 只看该作者
4# rongwinzip
的确,我用 的是enc28j60,今天改了下寄存器设置,能接收广播数据了,可是现在又出现个新的问题,就是在第一次只接收外部网口数据的时候(有两路数据),接收一次就就接收不了了,如果一直广播发着,就可以,应该是哪里还没改好。

使用特权

评论回复
7
gjb711| | 2012-12-2 22:44 | 只看该作者
UIP_CONF_BROADCAST UIP_BROADCAST  检测这个参数 估计你没设置  

使用特权

评论回复
8
lazyboyp| | 2014-10-24 10:09 | 只看该作者
337zhang 发表于 2012-9-14 17:37
4# rongwinzip  
的确,我用 的是enc28j60,今天改了下寄存器设置,能接收广播数据了,可是现在又出现个新 ...

你好,请问下,我现在也遇到同样的问题,寄存器是怎么设置的呢

使用特权

评论回复
9
337zhang|  楼主 | 2014-11-22 11:15 | 只看该作者
lazyboyp 发表于 2014-10-24 10:09
你好,请问下,我现在也遇到同样的问题,寄存器是怎么设置的呢

ENC28J60寄存器里有设置广播的地方,你在参考手册里搜下“广播”,应该是能找到的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

82

帖子

1

粉丝