金牌会员
 
- 积分
- 2100
- 金钱
- 2100
- 注册时间
- 2013-11-27
- 在线时间
- 518 小时
|
5金钱
这个函数tcp_client_demo_appcall
if (uip_newdata())
{
if((tcp_client_sta&(1<<6))==0)//????????????
{
if(uip_len>199)
{
((u8*)uip_appdata)[199]=0;
}
strcpy((char*)tcp_client_databuf,uip_appdata);
tcp_client_sta|=1<<6;//±í?????????§??????
}
}else if(tcp_client_sta&(1<<5))//???????è??·???
{
s->textptr=tcp_client_databuf;
s->textlen=strlen((const char*)tcp_client_databuf);
tcp_client_sta&=~(1<<5);//????±ê??
}
//?±?è????·???????????????????°ü???????????¨???±???¨??uip·???????
if(uip_rexmit()||uip_newdata()||uip_acked()||uip_connected()||uip_poll())
{
tcp_client_senddata();
}
里面两个地方都有uip_newdata,每次新数据到达 一定要发送出去数据吗?
还有这个标志位,tcp_client_tsta 在main函数里面设置的是0xff,而tcp_client_sta是没有初值的,在main函数里面,if(tcp_client_tsta!=tcp_client_sta)
那不是无论状态改变没有,都会进入这个if语句吗? |
最佳答案
查看完整内容[请看2#楼]
uip_newdata是接收数据的,收到新数据,自然要读取出来,否则就会丢失。
tcp_client_tsta随后会等于tcp_client_sta,所以,启动后,只会执行一次,直到二者不想等,才会执行第二次。
|