新手上路
- 积分
- 48
- 金钱
- 48
- 注册时间
- 2013-9-27
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-7-26 08:04:36
|
显示全部楼层
回复【3楼】正点原子:
---------------------------------
这是在循环中设置标志位:
if(tcp_server_sta&(1<<7)) //连接还存在
{
tcp_server_sta |= 1<<5; // 有数据要发送
}
else if(tcp_server_sta&(1<<5))//有数据需要发送
{
s->textptr=tcp_server_databuf_t;
s->textlen=strlen((const char*)&tcp_server_databuf_t[2]) + 2;
tcp_server_sta&=~(1<<5);//清除标记
}
//当需要重发、新数据到达、数据包送达、连接建立时,通知uip发送数据
if(uip_rexmit()||uip_newdata()||uip_acked()||uip_connected()||uip_poll())
{
tcp_server_senddata();
}
//发送数据给客户端
void tcp_server_senddata(void)
{
struct tcp_demo_appstate *s = (struct tcp_demo_appstate *)&uip_conn->appstate;
//s->textptr: 发送的数据包缓冲区指针
//s->textlen :数据包的大小(单位字节)
if(s->textlen>0)uip_send(s->textptr, s->textlen);//发送TCP数据包
//tcp_server_send(tcp_server_databuf_t, s->textlen);
}
就是原子哥里面的函数 |
|