让LwIP拥有PING其他设备的能力
LwIP是个很不错的协议栈,但是由于其体积过于小巧,使其只能支持ICMP的ECHO类型。
因为在“icmp.c”中的“void icmp_input(struct pbuf *p, struct netif *inp)”函数里有个很长的switch case语句(大约80行的位置)。
而这个语句只case了两个条件“ICMP_ECHO”和“default”,也就是说LwIP协议栈只能识别类型为“ICMP_ECHO”的icmp报文。
所以需要手动添加一个“case ICMP_ER”(ICMP Echo Reply)的判断条件,先让设备能够接受处理icmp的回复消息。
测试阶段,暂时只是用了一个OSSemPost发出一个信号,如图:
下面开始创建icmp发送功能,建议提前了解一下TCP/IP的基础知识包括icmp和ping,还有些LwIP的知识。
首先申请创建一个ICMP协议控制块,使用“raw_new”函数,并配置本机和目标IP地址,如图:
准备组装icmp的报文,包括类型,标识符,序列号校验和等等信息,如图:
数据按照协议标准设置完成后,便可以发送出去了,使用“raw_sendto”函数,如图:
在ucos中创建一个间隔n秒ping一次目标主机的任务,如图,每间隔2秒钟ping一次目标主机,接收到reply后打印“success”,否则打印“failed”,累积失败4此判定为彻底失去连接。
让LwIP拥有PING其他设备的能力相关推荐
- 【LwIP】让LwIP拥有PING其他设备的能力
本文的前提是单片机的LWIP已经跑起来了,能够被外部设备ping通,在此基础上,新增让单片机ping外部设备的功能. 首先,我们需要创建ICMP控制块,在主循环前创建一次即可. struct raw_ ...
- kodi mysql_家庭影音必备系统Kodi虽然好用但总少了些什么?或许你需要一台群晖为 Kodi 注入多设备同步能力...
家庭影音必备系统Kodi虽然好用但总少了些什么?或许你需要一台群晖为 Kodi 注入多设备同步能力 2018-08-06 13:57:20 179点赞 2165收藏 148评论 值友们大家好!最近有些 ...
- stm32cube+lwip+DP8384,PING不通的相关解决方法(转载)
Wireshare抓包工具调试 1 使用STM32CubeMX生成带系统的Lwip工程.生成后,怎么都Ping不通. 在不使用FreeRTOS时,要在main里的while(1)中添加MX_LWIP_ ...
- Teams App 如何使用设备的能力
我们以前讲到过,Teams有很多中可以扩展的方面,其中有一种是Tab,开发者可以开发一个web page/app,然后以tab的方式嵌入到teams里面. 除了基本的功能,这种tab也可以使用team ...
- 即时系统和非即时系统的区别?_企业即时通讯系统拥有哪些二次开发能力?
一.企业即时通讯常见的二次开发能力 日常工作中,沟通如空气般必不可少,因此即时通讯软件是常驻在企业桌面的应用,在操作系统右侧状态栏中的托盘图标闪动能即时的提醒用户有新的消息等待阅读. 随着办公需求的多 ...
- STM32CubeMX+ETH+DP83848+Lwip 成功ping通(基于stm32F107开发板)
开发环境说明: STM32CubeMX6.2.1 Keil5 本实验基于开发板STM32F107VCTx 目录 一.实验目的 二.实验步骤 1.创建工程 2.在System Core这一项中进行SYS ...
- 宝元系统通讯软件recon_企业即时通讯系统拥有哪些二次开发能力?
一.企业即时通讯常见的二次开发能力 日常工作中,沟通如空气般必不可少,因此即时通讯软件是常驻在企业桌面的应用,在操作系统右侧状态栏中的托盘图标闪动能即时的提醒用户有新的消息等待阅读. 随着办公需求的多 ...
- 计算机无法ping其他设备,局域网ping不到其他设备怎么办
电脑无法连接到网络打印机,ping了一下发现能找到路由器但是找不到局域网中的其他设备.下面是小编给大家整理的一些有关局域网ping不到其他设备的解决方法,希望对大家有帮助! 局域网ping不到其他设备 ...
- STM32F207 +RTOS+LWIP 调试ping 不通解决。
最近调一个板子,要用到以太网功能 ,网卡芯片是8742,于是用CubeMax 使能了 LWIP 和GPIO 中的ETH 的9个IO 口,本以为没什么难度,谁知配置后,板子运行 ping 不能IP !! ...
最新文章
- 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
- ei加声调怎么加_空调怎么加氟 空调加氟方法【介绍】
- 【研发管理】为什么你的高效交付,却没有好的业绩
- Linux 列出文件列表命令ls
- 如何让代码更易于维护_易于使用的单位和集成代码
- *【51nod - 1459】迷宫游戏(记录双向权值的Dijkstra单源最短路)
- (转)微信公众平台关于fakeid和openid的解析
- v-for获取(循环次数)对象的length长度
- singft 函数 matlab,(新)信号与系统MATLAB实验全.doc
- [PyTorch] 译+注:一个例子,让你明白PyTorch框架
- 大学计算机社团学什么好,大学哪些社团组织最值得加入?很多人工作后才知道!...
- 招投标系统简介 招投标系统源码 java招投标系统 spring cloud spring boot 招投标系统功能设计
- python将npy文件转换成图片
- linux sqlplus 历史命令,SQLPLUS下历史命令查找
- 关闭135端口rpcss服务
- 同一台计算机同时安装多个打印机,r230驱动-同一台电脑可不可以装两台同品牌同型号的打印 – 手机爱问...
- python使用moviepy对视频提取音频和增加音频
- alexa与CISI指数—网站世界排名准则(转)
- Linux系统日志管理
- 诸神之战 | 赛事升级,4.1亿元奖金纳入浙江赛区奖项权益
热门文章
- vb对数据库操作用存储过程
- Java路径问题最终解决方案使用演示
- php访问者信息,如何通过PHP检索访问者的ISP?
- linux父进程循环,LINUX C 父进程建立多个子进程循环非堵塞回收列子
- java zero copy 实现,关于Zero Copy
- Python 爬虫进阶五之多线程的用法
- MySQL视图查询报错:Prepared statement needs to be re-prepared
- Spring Boot SLF4J日志实例
- 用FFmpeg从视频截取任意一帧图片的解决办法~
- 前端学习(2992):vue+element今日头条管理--目录结构说明