新手入门
- 积分
- 12
- 金钱
- 12
- 注册时间
- 2016-3-29
- 在线时间
- 1 小时
|
1金钱
我在myudp_init()做udp初始化,如下
void myudp_init(void)
{
uip_ipaddr_t ipaddr;
uip_ipaddr(ipaddr,192,168,1,10);
if(myudp_conn!=NULL)
{
uip_udp_remove(myudp_conn);
}
myudp_conn=uip_udp_new(&ipaddr,HTONS(1000));
if(myudp_conn!=NULL)
{
uip_udp_bind(myudp_conn,HTONS(2000));
}
}
我看uip资料上说,uip_udp_conns[]数组保持所有udp连接。uip_udp_new()函数将远端IP,远端端口写入uip_udp_conns[]数组中某一位置,并返回它的地址。我看了uip_udp_new()函数,没看出来它将新建立的连接写入uip_udp_conns[]数组啊,哪位指点一下。
在uip_process()函数中udp_input:部分,如下遍历udp连接时,我的代码始终无法进入for循环,我觉得是在uip_udp_new()时没有将新建连接写入uip_udp_conns[]数组。不知道是不是这样,在哪里把udp连接写入uip_udo\p_conns[]数组啊?
for(uip_udp_conn = &uip_udp_conns[0];uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS];++uip_udp_conn)
{
if(uip_udp_conn->lport != 0 &&
UDPBUF->destport == uip_udp_conn->lport &&
(uip_udp_conn->rport == 0 ||
UDPBUF->srcport == uip_udp_conn->rport) &&
(uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||
uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr)))
{
goto udp_found;
}
}
先谢过了
|
|