完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我的程序是参考战舰上面改过来的:按复位键 程序连接两次可以连接上,如果断电重连 就连不上,调试助手 显示1035错误
硬件没问题 因为运行 其他程序 上电和复位是一样的 void tcp_client_init(void)//服务器初始化函数{ struct tcp_client_state* ts; struct ip_addr ipaddr; err_t ret_err; IP4_ADDR(&ipaddr,192,168,0,122); //目标IP tcp_client_PCB = tcp_new(); /* 建立通信的 TCP 控制块(Clipcb) */ tcp_bind( tcp_client_pcb,IP_ADDR_ANY,TCP_CLIENT_PORT); /* 绑定本地 IP 地址和端口号 不绑定也可以运行 端口号自己分配 */ if(tcp_client_pcb!=NULL) { printf("初始化进入"); ts = mem_malloc(sizeof(struct tcp_client_state)); //申请内存 tcp_arg(tcp_client_pcb, ts); //将程序的协议控制块的状态传递给多有的回调函数 tcp_connect(tcp_client_pcb,&ipaddr,6000,tcp_client_connect); //连接函数tcp_client_accept成功连接到主机调用 tcp_recv(tcp_client_pcb, tcp_client_recv);//指定连接接收到新的数据之后将要调用的回调函数 tcp_poll(tcp_client_pcb, tcp_client_poll, 2);//轮询函数 发送数据 时间为2/2=1 } } 检测状态在主程序中 5S检测一次,connect_net是连接状态标志位 if(connect_net==1) { printf("开始重新连接 ");tcp_closed();tcp_client_init();if(connect_net==0) {printf("重新连接 ");} |
|
相关推荐
9个回答
|
|
|
|
|
|
|
|
|
|
楼主你移植到mini开发板的吗?能不能指点下
|
|
|
|
关于客户端重连的问题能发个程序共享下不?谢谢!
|
|
|
|
楼主,请问下,我也是用LWIP,发现发送一段时间就发送不出去,已经调用了tcp_write,但是发送不出去,然后我就在这里close_pcb,然后重连,再发送一段时间,重复几次后就再也连接不上服务器了!
|
|
|
|
static err_t tcp_echoclient_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{ struct echoclient *es; err_t ret_err; LWIP_ASSERT("arg != NULL",arg != NULL); es = (struct echoclient *)arg; /* if we receive an empty tcp frame from server => close connection */ if (p == NULL) { /* remote host closed connection */ es->state = ES_CLOSING; if(es->p_tx == NULL) { /* we're done sending, close connection */ tcp_echoclient_connection_close(tpcb, es); } else { /* send remaining data*/ tcp_echoclient_send(tpcb, es); } ret_err = ERR_OK; } /* else : a non empty frame was received from echo server but for some reason err != ERR_OK */ else if(err != ERR_OK) { /* free received pbuf*/ if (p != NULL) { pbuf_free(p); } ret_err = err; } else if(es->state == ES_CONNECTED) { /* increment message count */ message_count++; /* Acknowledge data reception */ tcp_recved(tpcb, p->tot_len); pbuf_free(p); tcp_echoclient_connection_close(tpcb, es); ret_err = ERR_OK; } /* data received when connection already closed */ else { /* Acknowledge data reception */ tcp_recved(tpcb, p->tot_len); /* free pbuf and do nothing */ pbuf_free(p); ret_err = ERR_OK; } return ret_err; } 标色的就是检测到连接断开。 |
|
|
|
static err_t tcp_echoclient_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)
{ struct echoclient *es; err_t ret_err; LWIP_ASSERT("arg != NULL",arg != NULL); es = (struct echoclient *)arg; /* if we receive an empty tcp frame from server => close connection */ if (p == NULL) { /* remote host closed connection */ es->state = ES_CLOSING; if(es->p_tx == NULL) { /* we're done sending, close connection */ tcp_echoclient_connection_close(tpcb, es); } else { /* send remaining data*/ tcp_echoclient_send(tpcb, es); } ret_err = ERR_OK; } /* else : a non empty frame was received from echo server but for some reason err != ERR_OK */ else if(err != ERR_OK) { /* free received pbuf*/ if (p != NULL) { pbuf_free(p); } ret_err = err; } else if(es->state == ES_CONNECTED) { /* increment message count */ message_count++; /* Acknowledge data reception */ tcp_recved(tpcb, p->tot_len); pbuf_free(p); tcp_echoclient_connection_close(tpcb, es); ret_err = ERR_OK; } /* data received when connection already closed */ else { /* Acknowledge data reception */ tcp_recved(tpcb, p->tot_len); /* free pbuf and do nothing */ pbuf_free(p); ret_err = ERR_OK; } return ret_err; } 上面标错地方了。。 |
|
|
|
我检测到断开连接,前面几次可以重连上,但是之后就重连不上了!
|
|
|
|
我也是多少次断开网线后,不能重新连接上PC的服务器端。
|
|
|
|
只有小组成员才能发言,加入小组>>
如何使用STM32+nrf24l01架构把有线USB设备无线化?
2547 浏览 7 评论
请问能利用51单片机和nRF24L01模块实现实时语音无线传输吗?
2332 浏览 5 评论
3161 浏览 3 评论
2804 浏览 8 评论
为什么ucosii上移植lwip后系统进入了HardFault_Handler?
2762 浏览 4 评论
请教各位大咖:有没有接收频率32M左右的芯片推荐的?先感谢啦!
610浏览 1评论
855浏览 0评论
970浏览 0评论
623浏览 0评论
449浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 00:14 , Processed in 1.410245 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号