完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近小菜菜我又要做RTT连接远程服务器的项目,也是最近搞的一头雾水,情况是这样的: 我用RTT创建俩线程一个是TCP连接线程优先级是13,一个是TCP心跳包的线程优先级是14, 当远程服务器断开之后,那么优先级为13的TCP链接线程挂起在邮箱上就会返回错误,这时先销毁socket,然后再重复创建链接,如果不成功一直重复创建链接销毁的过程,如果成功就发送一串数据,继续挂起在RECV上等待,实际情况是这样的,他会从新连接,会执行,但是。。。。。 这个函数, 如果服务器端监听/断开不频繁,控制在10秒以外,就可以一直的有重练接,不会进入断言, 也就是说又一个未知的时间内做了一些什么事情,让他进入了断言, 这是TCP连接线程的代码: _> ```void tcpclient_SC(const char *url, int port) |
|
相关推荐
3个回答
|
|
试一试下面的代码:
#define BUF_SIZE 512 static char buffer[BUF_SIZE]; static int socket; void tcp_client_thread(void *p) { while(1) { while((socket = lwip_socket(AF_INET, SOCK_STREAM, 0)) == -1) { rt_thread_delay(RT_TICK_PER_SECOND/5); continue; } lwip_setsockopt( socket, IPPROTO_TCP, TCP_NODELAY, &optval, sizeof(optval)); ServerAddr.sin_family = AF_INET; ServerAddr.sin_port = htons(devInfo.server_port); ServerAddr.sin_addr.s_addr = devInfo.server_ip.addr; rt_memset(&(ServerAddr.sin_zero),0, sizeof(ServerAddr.sin_zero)); if(connect(socket, (struct sockaddr *)&ServerAddr, sizeof(struct sockaddr)) == -1) { rt_thread_delay(RT_TICK_PER_SECOND/5); lwip_close(socket); continue; } lwip_send(socket, buffer, 10, MSG_DONTWAIT); printf("连接到服务器! "); memset(buffer, 0, sizeof(buffer)); time.tv_sec = 300; time.tv_usec = 0; while(1) { FD_ZERO(&readset); FD_SET(socket, &readset); ret = lwip_select(socket + 1, &readset, 0, 0, &time); if(ret > 0 && FD_ISSET(socket, &readset)) { len = lwip_recv(socket, buffer, sizeof(buffer), 0); if(len > 0) { rt_hw_led_on(LED4); data_handler(buffer, len); memset(buffer, 0, sizeof(buffer)); rt_thread_delay(RT_TICK_PER_SECOND/10); rt_hw_led_off(LED4); } else { lwip_close(socket); printf("连接关闭! "); break; } } else { //心跳包 char ch = 0xAB; if(lwip_send(socket, &ch, 1, MSG_DONTWAIT) == -1) { printf("连接异常! "); lwip_close(socket); break; } } } } } |
|
|
|
多线程操作同一个socket !!!
|
|
|
|
用select,TCP编程是有些地方需要注意的,否则容易陷进去
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1111 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3930 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1534 浏览 0 评论
2287 浏览 0 评论
1730 浏览 0 评论
75579 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-31 06:40 , Processed in 0.463988 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号