|
发表于 2011-9-8 01:37:33
|
显示全部楼层
调uip_connect后UIP其实就初始化了一下结构数据,没有向外发数据的动作的,等到UIP对每个TCP连接轮流处理2次才开始连接,连接成功后uip_connected()为真。
按如下处理可以快速连接
struct uip_conn *u;
uip_ipaddr(ipaddr, 192,168,1,240); // 目的地址
u=uip_connect(&ipaddr , HTONS(80) );
if(u==NULL)
{
//这里要做错误处理。
return ;
}
uip_periodic_conn(u);
if(uip_len== 0)
{
uip_periodic_conn(u);//由于在uip_connect时conn->timer = 1,"
//"所以必须调用uip_periodic_conn两次uip才会准备数据"
}
if(uip_len > 0)
{
uip_arp_out();
tapdev_send();
}
//可以选择循环调用UipPro(uip协议栈的实现入口),直到连接成功。
---------------------------------------------------------------------
连接成功后要把u记下来,主动发送数据方法如下
uip_conn =u;
uip_send(data, datalen);
uip_process(UIP_TIMER);
if(uip_len > 0)
{
uip_arp_out();
tapdev_send();
}
UIP要做完整还是要充分使用struct uip_conn中的uip_tcp_appstate_t appstate |
|