关于w5500中KeepAlive的学习

本文介绍了在W5500芯片上使用TCP KeepAlive功能来解决Client异常复位导致的重连问题。内容包括自动和手动模式的设置,重点讨论了手动模式下如何通过中断判断释放socket,以及官方库中setsockopt函数的一个需要注意的细节。
摘要由CSDN通过智能技术生成

       最近客户反馈了一个很蛋疼的问题,Client异常复位或者没有close socket的话会导致无法重连Server(本人使用W5500作为Server端给Client提供数据)。解决方法可能不止一个,但我只想用TCP的KeepAlive机制来解决这个问题,于是乎在浏览器中游荡了大半天,入了些坑,最终解决了上面的问题。关于W5500的KeepAlive使用,已有不少人用到了。要么是什么什么详解,要么是粘点官方的话,最后粘上工程链接,还特么不能立即获取。我需要的只是一看就能用的代码框架儿,属于 “在线等,比较急” 的那种!

      W5500的KeepAlive分为自动和手动两种,自动的话要以5s为时间单位来检测当前连接是否正常,这让尿急的我不能容忍。还是手动比较香,当然用51那种龟速MCU来跑的话就另当别论了。手动的话会产生超时中断,我已经开了两个中断,难道要我在开一个中断,然后在中断里close socket嘛(说实话三个中断嵌套我感觉已经够乱了)。我觉得既然能产生中断,直接判断中断标志来决定要不要释放socket更好一点。即便我设置了W5500的中断,我不鸟它总可以吧!(不去写ISR,因为W5500是通过拉低引脚来通知MCU的)。下面是自动和手动两种不同的检测方式。

自动模式

       标号1就是启动自动KeepAlive,是不是很简单,嗯?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值