ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【实战经验分享】一劳永逸的解决网线随意热插拔问题

2019-11-08 09:57:45  阅读:243  来源: 互联网

标签:插拔 函数 热插拔 网络 网线 插入 一劳永逸


说明:

网线热插拔是实际项目中经常会遇到的问题,热插拔又有各种各样的情况要具体处理,这里分享一种实用性方案。


热插拔的问题种类:
1、上电前,网线还没有插入,上电后插入如何处理。
2、服务器模式使用时,检测到断开网线了,重新插入如何处理。
3、客户端模式时,检测到网线断开了,重新插入如何处理。
4、长时间断开,比如1个小时以上,重新插入后协议栈无法正常运行如何处理。
5、将网线从一个网络环境切换到另一个网络环境。

这几个问题,如果具体问题都配一个具体的解决方案就太繁琐了。而且逻辑关系不容易捋顺。

解决办法:
这里为大家分享一种解决办法,以新版的RL-TCPnet V7.X为例。
1、有个专门的网络插拔通知函数  ,通过这个函数可以方便的了解网络插拔信息。
2、然后还有个初始化函数netInitialize()和复位初始化函数netUninitialize(),其中这个复位初始化函数尤其好用,在检测到网线被拔掉后,调用此函数会释放所有用户使用的网络资源,并删除以太网接口任务和协议栈内核任务。
3、最后就是用户自己创建的各种应用任务,我们这里在检测到网线拔掉后直接将其删除即可(优先调用网络复位任何后再删),检测到网线插入后重新创建。

具体处理:
网络插拔消息函数,这里直接设置一个全局变量来标识插拔状态。
当然,追求执行效率,也可以采用任务信号量,事件标志等方式,这里没有采用的原因是大家自己移植的时候很容易出现没有创建任务组件就去使用了。
 

专门开辟一个网络初始化和检测任务来处理插拔问题:
 

实际测试效果比较满意,这样就不用具体情况具体分析了,直接所有问题全部被处理了。

标签:插拔,函数,热插拔,网络,网线,插入,一劳永逸
来源: https://www.cnblogs.com/armfly/p/11818240.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有