1. 程式人生 > >STM32NET學習筆記 ARP和Ethernet部分

STM32NET學習筆記 ARP和Ethernet部分

BYTE arp_packet_is_arp ( BYTE *rxtx_buffer, WORD_BYTES opcode )
{
    BYTE i;
   
    // 該報文為ARP報文
    if( rxtx_buffer[ ETH_TYPE_H_P ] != ETH_TYPE_ARP_H_V || rxtx_buffer[ ETH_TYPE_L_P ] != ETH_TYPE_ARP_L_V)
        return 0;
    // 確認ARP操作碼 ARP請求 1 ARP應答2
    if ( rxtx_buffer[ ARP_OPCODE_H_P ] != opcode.byte.high || rxtx_buffer[ ARP_OPCODE_L_P ] != opcode.byte.low )
        return 0;
    // 匹配IP地址
    for ( i=0; i<sizeof(IP_ADDR); i++ )
    {
        if ( rxtx_buffer[ ARP_DST_IP_P + i] != stm32_ip.byte[i] )
            return 0;
    }
   
    // 通過串列埠輸出
#if ARP_DEBUG
    printf("ARP Message!\r\n");
    printf("Source IP:%d.%d.%d.%d\r\n",\
            rxtx_buffer[ARP_SRC_IP_P+0],rxtx_buffer[ARP_SRC_IP_P+1],\
            rxtx_buffer[ARP_SRC_IP_P+2],rxtx_buffer[ARP_SRC_IP_P+3]);
    printf("Source MAC:%02X-%02X-%02X-%02X-%02X-%02X\r\n",\
        rxtx_buffer[ARP_SRC_MAC_P+0],rxtx_buffer[ARP_SRC_MAC_P+1],\
            rxtx_buffer[ARP_SRC_MAC_P+2],rxtx_buffer[ARP_SRC_MAC_P+3],\
            rxtx_buffer[ARP_SRC_MAC_P+4],rxtx_buffer[ARP_SRC_MAC_P+5]);
#endif
    return 1;
}

相關推薦

STM32NET學習筆記 ARPEthernet部分

BYTE arp_packet_is_arp ( BYTE *rxtx_buffer, WORD_BYTES opcode ) { BYTE i; // 該報文為ARP報文 if( rxtx_buffer[ ETH_TYPE_H_P ] != ETH_TYPE_ARP_H_V

STM32NET學習筆記——TCP部分

BYTE tcp_receive ( BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip ) { WORD tcp_reclen, tcp_sendlen , dest_port; // 獲得目標埠號 即客戶端埠號 dest_por

STM32NET學習筆記 UDP部分

1.前言     嵌入式乙太網開發是一個很有挑戰性的工作。通過幾個月的學習,我個人覺得大致有兩條途徑。第一條途徑,先通過高階語言熟悉socket程式設計,例如C#或C++,對bind,listen,connect,accept等函式熟悉之後,應用 lwIP。第二種途徑,通過分

Linux Unix shell 編程指南學習筆記(第四部分

fcm 驗證 () only arguments line div 反饋 sed 第十六章 shell腳本介紹 此章節內容較為簡單,跳過。 第十七章 條件測試 test命令 expr命令 test 格式 test condition 或者 [

(一)Oracle學習筆記—— 表表空間

最大 更改 默認 oracle spa mil 步驟 font lte 1. 表空間 一個數據庫可以有多個表空間,一個表空間裏可以有多個表。表空間就是存多個表的物理空間;可以指定表空間的大小位置等。 1.1 創建表空間語句 create tablespace t

python學習筆記列表元組(三)

python列表(list)是Python以及其他語言中最常用到的數據結構之一。Python使用使用中括號 [ ] 來解析列表。列表是可變的(mutable)——可以改變列表的內容。對應操作:1、查([]切片操作) name = [‘tom‘,‘張三‘,‘joker‘,‘李四‘] print(name[2])

學習筆記---buffercache的區別

cache一.概念buffer:緩沖區,一個用於存儲速度不同步的設備或優先級不同的設備之間傳輸數據的區域。cache: 緩存,位於CPU與主內存間的一種容量較小但速度很高的存儲器。保存著CPU剛用過或循環使用的一部分數據。二、應用場景buffer:由各種進程分配,被用在輸入隊列等方面。cache: 用在磁盤的

Maven學習筆記—安裝配置

src 自己 修改 分享 另一個 window 關於 1.3 頁面 Maven的安裝和配置 1 在windows上安裝maven 1.1 下載maven 訪問maven的下載頁面:http://maven.apache.org/download.cgi,選擇版本下載即可。

Python 學習筆記 -- 類實例

isdigit 特殊 .... 方法 raise fun angle 總結 area 1 #創建一個類,類是一種具有相同屬性和方法的抽象 2 #創建類需要使用class關鍵字,並且定義方法時,方法的第一個參數是self 3 class Student(object)

多線程編程學習筆記——asyncawait(二)

處理 sync ext 操作 line cnblogs 編程 技術 容器 接上文 多線程編程學習筆記——async和await(一) 三、 對連續的異步任務使用await操作符 本示例學習如何閱讀有多個await方法方法時,程序

多線程編程學習筆記——asyncawait(三)

result ask aps nta cti ise 線程編程 學習筆記 top 接上文 多線程編程學習筆記——async和await(一) 接上文 多線程編程學習筆記——async和await(二) 五、 處理異步操

php學習筆記-POSTGET的區別

nbsp 數據 post方法 常用 地址欄 限制 區別 地址 提交數據 POST和GET都可以用來提交數據。 POST方法提交的數據在瀏覽器的地址欄是不可見的,當然利用一些工具是可以看到的,而GET方法提交的數據在地址欄是可見的。兩者比較,POST更安全一點。 POST方法

Kibana學習筆記——安裝使用

分享 server 學習筆記 下載 文件夾 man soft www eight 1.首先下載Kibana https://www.elastic.co/downloads 2.解壓 tar -zxvf kibana-6.2.1-linux-x86_64.tar.g

Python學習筆記-Day61Day62-Django模板系統

主要內容: 一、模板語言-變數 二、模板語言-過濾器 三、模板語言Tags 四、csrf-token 五、母板 六、元件 七、靜態檔案相關 八、自定義tag     一、Django模板語言-變數 1、語法:{{ 變數名 }} 2、命名規則:所有的數字、字母、下劃

Godot Engine 學習筆記 場景節點

Godot Engine 學習筆記 場景和節點 場景和節點 節點 場景 場景和節點 節點 在Godot中節點作為建立遊戲得到基本構建模,且可以用與執行各種特殊的功能。 節點都具有的屬性: 名字

python程式設計:從入門到實踐學習筆記-檔案異常

從檔案中讀取資料 讀取檔案、檔案路徑 #pi_digits.txt 3.1415926535   8979323846   2643383279 #file_reader.py fillename = 'pi_digits.txt' #讀取整個檔案 with

go學習筆記-變數常量

變數和常量 變數 基本寫法 //定義一個名稱為“variableName”,型別為"type"的變數 var variableName type //定義三個型別都是“type”的變數 var vname1, vname2, vname3 type 初始化 //初始化“variableName”的

python學習筆記——生成器迭代器

一、生成器 計算機的儲存資源一向是很寶貴的,在對大量的資料進行計算時,如果是把資料統一讀到記憶體中來在進行計算就會造成大量的資源浪費。用生成器來進行算計時採用是一邊迴圈一邊計算的方式,不用一下將資料讀入記憶體,節約大量記憶體空間。 舉個簡單的列子說明: 生成一個列表,並輸出列表各項

前端基礎學習筆記 圖片元素的居中對齊

圖片對齊 首先看文字居中方式: 上下居中:給文字一個line-height,最好和文字盒子大小相同。 左右居中:給文字一個text-align:center; 考慮到文字與圖片對齊用到基線對齊,所以圖片在盒子裡居中的方式為: text-align和line-height放在父級元

C# in Depth學習筆記-排序過濾

1.2 排序和過濾 本節不會改變 Product 型別,我們會使用示例的產品列表,並按名稱排序,然後找出最貴的產品。 每個任務都不難,但我們可以看到它到底能簡化到什麼程度。 1.2.1 按名稱對產品進行排序 以特定順序顯示一個列表的最簡單方式就是先將列表排好序,再遍歷並顯示其中的項。 在.NET