我是靠谱客的博主 落后小海豚,最近开发中收集的这篇文章主要介绍LWIP+ENC28J60长时间运行后无法访问外网服务器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一台设备,硬件使用STM32+ENC28J60,协议栈使用LWIP-2.1.2版本。

作为TCP客户端与外网的服务器通信,正常运行了约2个月后,出现出法连接服务器的故障,

查看UART日志发现:使用lwip的函数tcp_connect建立连接,返回成功。但在等待连接成功的回调时,发生了error异常,错误代码是ERR_ABRT(-13),一般表示连接超时。

1.重新插拔网线,可以正常检测到网线断开和连接,说明网口芯片工作正常,网口的绿灯和黄灯也正常点亮。

2.使用同局域网的电脑调用ping命令,可以正常ping通设备,再次说明网卡芯片是正常工作的,协议栈也没有崩溃。

3.使用参数配置工具,将设备内的服务器IP地址改为局域网内的电脑,并在该电脑上启动一个TCP服务器调试程序,发现设备可以正常连接到该电脑,通信也正常。

4.再次将设备内的服务器IP地址恢复为外网服务器,故障依旧,仍无法连接。

5.将设备的网线插入到用于调试电脑,该电脑可以正常访问外网服务器,说明外网服务器也没有问题。

6.无奈,只得重启设备,故障消失!

 

最终还是没能定位到问题所在,困扰中....................


2020.12.29

经过一个多月的待机观察,终于发现了问题所在!

这个是应用层软件功能的设计缺陷,不是网卡问题,也不是LWIP协议栈问题。

本地的网关地址被修改了,导致无法访问外网!

 

 

最后

以上就是落后小海豚为你收集整理的LWIP+ENC28J60长时间运行后无法访问外网服务器的全部内容,希望文章能够帮你解决LWIP+ENC28J60长时间运行后无法访问外网服务器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部