Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Network
局域网环境tcp发送超时导致重启
发布于 2015-04-20 17:56:19 浏览:2227
订阅该版
环境: rt-thread 1.0.1 lwip 1.4.0 mcu:stm32f103 网卡:enc28j60 设备与pc在同一局域网,pc为server,设备client. 设备向pc端发送tcp数据 。 发送使用select,有可用资源时再write数据 出现问题:: 每隔几分钟出现select超时,tcp write失败并关闭链接,多次后设备重启!!。。 分析: 为什么会出现select超时以及发送失败? 发送速度大概几k每秒。 若采用设备pc直连方式就没有频繁超时重启的问题。 应用层是用的标准的发送流程,应该没有什么问题,是否是协议栈及lwip的性能稳定性问题? 或者能否有些调试的思路和方法 项目很急,万分感谢!! 串口log如下,可以看到超时及发送失败多次后设备重启了。。 insh>>send failed, close connect... send failed, close connect... select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing select() timeout for writing send() failed! sock_err=104send failed, close connect... send failed, close connect... enc28j60 clkrdy signal 1 enc28j60 clkrdy ok Onevo TM->To enter the BOOT upgrade mode , press the 'Enter' time_S is 5 waitting time end into app... | / - RT - Thread Operating System / | 1.0.1 build Apr 17 2015 2006 - 2011 Copyright by rt-thread team TCP/IP initialized. TCP/IP initialized! 设备端发送代码: ```int app_tcp_send(int sock, struct data_packet *wdata, uint32_t timeout_usec) { struct timeval timeout; fd_set w_fd; int cnt; int ret = 0; int len; int wlen; if(sock < 0 || wdata == NULL) { syslog(WARN,"app_tcp_send() invalid para! "); return -1; } len = DATA_HEAD_LEN+wdata->len; wdata->len = htons(wdata->len); timeout.tv_sec = timeout_usec/1000000; timeout.tv_usec = timeout_usec%1000000; FD_ZERO(&w_fd); //初始化 w_fd 为空 FD_SET(sock,&w_fd); //把sock添加到 w_fd中去 cnt = select(sock+1,NULL,&w_fd,NULL,&timeout); if ( cnt < 0 ) { syslog(WARN,"select() failed! sock_err=%d ",lwip_get_error(sock)); rt_kprintf("select() failed! sock_err=%d ",lwip_get_error(sock)); ret = -1; } else if ( cnt == 0 ){ syslog(WARN,"select() timeout for writing "); rt_kprintf("select() timeout for writing "); ret = 1; } else { wlen = writen(sock,(const uint8_t *)wdata,len); if( wlen < 0) { syslog(WARN,"send() failed! sock_err=%d",lwip_get_error(sock)); rt_kprintf("send() failed! sock_err=%d",lwip_get_error(sock)); ret = -1; } else if( wlen == len) { ret = 1; // syslog(INFO,"send ok! len=%d",len); } else{ syslog(WARN,"send failed!send len =%d, data len =%d",wlen, len); rt_kprintf("send failed!send len =%d, data len =%d",wlen, len); ret = -1; } } return ret; }```
查看更多
5
个回答
默认排序
按发布时间排序
bernard
2015-04-20
这家伙很懒,什么也没写!
先判断为什么会重启?开了狗,不能喂狗导致重启?另外,你用的EMAC芯片亮了
toasun
2015-04-21
这家伙很懒,什么也没写!
当然,如果硬件没问题的话 不用select测试一下阻塞发包呢? 或者直接在send中设置为非阻塞试试看。
huhu
2015-04-21
这家伙很懒,什么也没写!
>先判断为什么会重启?开了狗,不能喂狗导致重启?另外,你用的EMAC芯片亮了 --- 是开了狗,在systick中断里喂得狗。 我推测是网络收发包方面原因导致系统异常,但是无法确定是什么具体原因。 而且在局域网中问题变得严重,有什么好的调试协议栈网卡的手段? 另外emac亮了指的啥?
huhu
2015-04-21
这家伙很懒,什么也没写!
>当然,如果硬件没问题的话 >不用select测试一下阻塞发包呢? >或者直接在send中设置为非阻塞试试看。 --- 恩 回头试试
撰写答案
登录
注册新账号
关注者
0
被浏览
2.2k
关于作者
huhu
这家伙很懒,什么也没写!
提问
2
回答
6
被采纳
0
关注TA
发私信
相关问题
1
lwip1.4.1连接经常会断开无法连接上,可以ping通
2
LPC1768:RTT+LWIP+webserver用IE刷网页出现硬件中断错误(已经解决)
3
求一些LWIP开发的经验,目前ping一直不稳定。
4
stm32f207+dp83848无法ping通
5
RTT下的LWIP传递机制
6
rtt内lwip的socket是否是线程安全?
7
Lwip+enc28j60无法ping通
8
坑爹的rtconfig.h lwip关掉了checksum
9
花了一个晚上,把RT2.0的LWIP、网卡驱动、文件系统整合起来了,发现一点小问题
10
lwip例程中udp发送时如何指定源端口发送到指定目的地端口
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
【NXP-MCXA153】 定时器驱动移植
2
GD32F450 看门狗驱动适配
3
【NXP-MCXA153】看门狗驱动移植
4
RT-Thread Studio V2.2.9 Release Note
5
CherryUSB的bootuf2配置
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
15
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
8
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部