Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Network
link_down
RTT中LWIP底层链路状态改变时,应该如何配置LWIP使得上层socket接口函数返回错误
发布于 2016-10-19 19:59:46 浏览:3606
订阅该版
[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.6k
关于作者
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
RT-Thread CI编译产物artifacts自动上传功能介绍
2
STM32G030移植RT-Thread
3
CubeMX & RT-Thread Studio 联合开发说明
4
RT-Thread动态模块
5
RT-Thread项目助手v0.3 | Ubuntu与MacOS平台的RT-Thread Env
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
rt-smart
RTC
FAL
I2C_IIC
ESP8266
UART
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
GD32
定时器
ADC
flashDB
编译报错
socket
中断
rt_mq_消息队列_msg_queue
Debug
keil_MDK
SFUD
msh
ulog
C++_cpp
MicroPython
本月问答贡献
lchnu
3
个答案
2
次被采纳
张世争
1
个答案
2
次被采纳
a1012112796
9
个答案
1
次被采纳
三世执戟
8
个答案
1
次被采纳
聚散无由
5
个答案
1
次被采纳
本月文章贡献
jinchanchan
9
篇文章
13
次点赞
ssdd45555
3
篇文章
2
次点赞
聚散无由
1
篇文章
4
次点赞
RTT_逍遥
1
篇文章
3
次点赞
hywing
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部