初级会员
- 积分
- 86
- 金钱
- 86
- 注册时间
- 2020-1-17
- 在线时间
- 16 小时
|
发表于 2020-1-17 16:21:50
|
显示全部楼层
调用 tcp_connect(tcppcb, &rmip_addr, TCP_CLIENT_PORT, tcp_client_connected);之后
我是用printf打点测试的,发现程序进不去 tcp_client_connected 回调函数
//lwIP TCP连接建立后 调用回调函数
err_t tcp_client_connected(void *arg, struct tcp_pcb *tpcb, err_t err)
{
printf("run to tcp_client_connected.\r\n");
struct tcp_client_struct *es = NULL;
if(err == ERR_OK)
{
printf("tcp_client_connected -> err == ERR_OK.\r\n");
es = (struct tcp_client_struct*)mem_malloc(sizeof(struct tcp_client_struct));//申请内存
if(es != NULL)//内存申请成功
{
printf("tcp_client_connected -> es != NULL.\r\n");
es->state=ES_TCPCLIENT_CONNECTED;//状态为连接成功
es->pcb=tpcb;
es->p=NULL;
tcp_arg(tpcb,es);//使用es更新tpcb的callback_arg
tcp_recv(tpcb,tcp_client_recv);//初始化LwIP的tcp_recv回调功能
tcp_err(tpcb,tcp_client_error);//初始化tcp_err()回调函数
tcp_sent(tpcb,tcp_client_sent);//初始化LwIP的tcp_sent回调功能
tcp_poll(tpcb,tcp_client_poll,1);//初始化LwIP的tcp_poll回调功能
//标记连接到服务器了
tcp_client_flag |= 1<<5;
err = ERR_OK;
}
else
{
printf("tcp_client_connected -> es == NULL.\r\n");
tcp_client_connection_close(tpcb,es);//关闭连接
err = ERR_MEM;//返回内存分配错误
}
}
else
{
printf("tcp_client_connected -> err != ERR_OK.\r\n");
tcp_client_connection_close(tpcb,0);//关闭连接
}
return err;
} |
|