Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Network
link_down
RTT中LWIP底层链路状态改变时,应该如何配置LWIP使得上层socket接口函数返回错误
发布于 2016-10-19 19:59:46 浏览:3497
订阅该版
[tocm] ## 环境 stm32f407,realtouch里面的eth驱动 LWIP工作配置为静态IP,应用软件使用的是socket(TCP)接口,作为客户端去链接TCP Server,底层通信链路改变后(拔掉网线),会调用如下的函数告诉LWIP,网卡状态变化:
```c if (status) netifapi_netif_set_link_up(device->netif); else netifapi_netif_set_link_down(device->netif); ``` 但是,上层软件通信和没断开之前一样,发送数据时一直返回正值(发送的数据量) 接收和没有断开时现象也是一样的,没有接收到数据,超时返回(我设置超时时间3S,正常连接时3S超时返回,断开后还是3S超时返回),请教大家,如何配置LWIP使得 lwip_write和lwip_read在网卡linkdown以后,错误返回。 ```ret = lwip_write(p_dev->work_socket, p_buf, len);``` ```ret = lwip_read(p_dev->work_socket, &p_buf[has_trans], remain);``` 此外,如果tcp server主动断开,两个函数是可以返回错误的,就是拔网线后,两个接口没有反应。
查看更多
4
个回答
默认排序
按发布时间排序
aozima
2016-10-19
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
拔掉网络,并没有必要马上断开连接,网络很可能立马插上。 还是keepliave一直靠谱。 但插拔中断会改变netif的状态,这样keepalive到期后可以很快失败! 另外就是DHCP重新获取,比如网络拔了,再插到新的网络环境中。 所以插拔中断还是挺有用的。
toli
2016-10-20
这家伙很懒,什么也没写!
LWIP配置如下配置: 在rtconfig.h或者lwipopt.h中定义宏,使能保活功能 ``` #define LWIP_TCP_KEEPALIVE 1 ``` 使用函数,单独设置socket保活时间(默认时间为2小时): ``` int keepAlive = 1; /* 开启keepAlive */ int keepIdle = 2; /* 保活时间 (S) */ int keepInterval = 2; /* 保活包的探测时间间隔(S) */ int keepCount = 3; /* 保活包重发次数,如果第一次探测就收到了响应 则后续的不再发送 */ setsockopt(p_dev->work_socket, SOL_SOCKET, SO_KEEPALIVE, (void *)&keepAlive, sizeof(keepAlive)); setsockopt(p_dev->work_socket, IPPROTO_TCP, TCP_KEEPIDLE, (void *)&keepIdle, sizeof(keepIdle)); setsockopt(p_dev->work_socket, IPPROTO_TCP, TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval)); setsockopt(p_dev->work_socket, IPPROTO_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount)); ``` 这样,几秒后,read和write函数会返回对应的err信息,关闭相应的socket,然后重新发起连接。
pjdu
2020-04-29
这家伙很懒,什么也没写!
不错,谢谢分享!
撰写答案
登录
注册新账号
关注者
0
被浏览
3.5k
关于作者
toli
这家伙很懒,什么也没写!
提问
7
回答
14
被采纳
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
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
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
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部