日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

让LwIP拥有PING其他设备的能力

發布時間:2023/12/10 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让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其他设备的能力的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。