做了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广播数据包的时候绑定设置不对呢?各位帮忙看看吧,谢谢了 |
|