初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2014-8-9
- 在线时间
- 6 小时
|

楼主 |
发表于 2017-5-8 20:11:26
|
显示全部楼层
谢谢!是不是下面这个函数,我把函数中的语句strlen((char*)tcp_server_sendbuf,改为我要发送数据长度就可以了吧!
//lwIP tcp_poll的回调函数
err_t tcp_server_poll(void *arg, struct tcp_pcb *tpcb)
{
err_t ret_err;
struct tcp_server_struct *es;
es=(struct tcp_server_struct *)arg;
if(es!=NULL)
{
if(tcp_server_flag&(1<<7)) //判断是否有数据要发送
{
es->p=pbuf_alloc(PBUF_TRANSPORT,strlen((char*)tcp_server_sendbuf),PBUF_POOL);//申请内存
pbuf_take(es->p,(char*)tcp_server_sendbuf,strlen((char*)tcp_server_sendbuf));
tcp_server_senddata(tpcb,es); //轮询的时候发送要发送的数据
tcp_server_flag&=~(1<<7); //清除数据发送标志位
if(es->p!=NULL)pbuf_free(es->p); //释放内存
}else if(es->state==ES_TCPSERVER_CLOSING)//需要关闭连接?执行关闭操作
{
tcp_server_connection_close(tpcb,es);//关闭连接
}
ret_err=ERR_OK;
}else
{
tcp_abort(tpcb);//终止连接,删除pcb控制块
ret_err=ERR_ABRT;
}
return ret_err;
}
|
|