原创 簡易版WireShark實現-效果

與官方WireShark捕獲的同一包數據進行對比 源IP地址、目的IP地址,源MAC地址和目的MAC地址,協議類型都相同 以太網幀長度,幀頭類型以及幀頭類型值相同 IP報文部分:總長度、標識,片偏移、IP協議類型、源IP地址、目

原创 Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.解決方法

問題 今天在Android Studio導入一個Eclipse的BLE工程時,遇到了下面這個問題: Error:Execution failed for task ':app:transformResourcesWithMergeJava

原创 簡易版WireShark實現-相關網絡知識(2)

定位IP報頭 獲得以太網幀後,當協議類型爲0x0800時,其負載部分協議爲IP協議,及以太網幀中的數據部分,從第46字節開始的前20個字節,就是IP報頭。數據結構如下: IP頭部的數據結構定義在頭文件【netinet/ip.h】中,

原创 簡易版WireShark實現-界面設計

下面是官方WireShark抓包軟件的截圖。 上面的矩形框主要是顯示每一包的簡略信息,包括數據包的序列數,數據包中的源IP地址和目的IP地址,協議類型和相關信息等等。 下面的矩形框主要是顯示每一包的各層的報頭信息(這裏我主要針對IP協

原创 簡易版WireShark實現-相關網絡知識(1)

​在Linux下數據鏈路層的訪問通常都是通過編寫內核驅動程序來實現的,在應用層使用SOCK_PACKET類型的協議族可以實現部分功能。 SOCK_PACKET類型 建立套接字的時候選擇SOCK_PACKET類型,內核將不對網絡數據進行處

原创 簡易版WireShark實現-相關網絡知識(3)

IP報頭中的協議類型 在定位IP報頭後,就可以根據其中的協議類型protocol來區分是IP層下的哪一種協議,主要協議類型即對應值如下: 協議類型 值 ICMP 1 IGMP 2 TCP 6 UDP 17

原创 編寫一個簡單的內核模塊程序Hello World!

一、Linux內核模塊基本原理 Linux 內核模塊(LKM)是一些在啓動的操作系統內核需要時可以載入內核執行的代碼塊,不需要時由操作系統卸載。它們擴展了操作系統內核功能卻不需要重新編譯內核、啓動系統。如果沒有內核模塊,就不得不反覆編譯生

原创 對於C++中引用和指針的理解

引用: 引用是C++提供的一種數據類型。定義引用類型變量的一般格式爲: <數據類型> & <引用變量名> = <變量名>; //變量名爲已定義的變量 我們在程序中定義引用類型變量,實際上是給已定義的變量起一個別名而已,引用類型的變量沒有

原创 tftp客戶端實現(二)-寫文件並回發確認消息

一、使用fopen來創建文件 當tftp的RRQ消息發送成功後,正常情況下服務器端就會回發第一個Data數據包,這時,客戶端需要做的是,在本地新建一個文件,以便將從服務器端接收的數據寫入到此文件中。現在,我們暫時使用fopen來創建文件。

原创 Android入門-Toast的使用

一.Toast是什麼? Toast是一種提供給用戶簡潔提示信息的視圖。 該視圖以浮於應用程序之上的形式呈現給用戶。Toast提示界面不會獲取焦點,所以不會影響用戶的操作。Toast提示就是在不影響用戶使用程序的同時,給用戶提供某些提示信息

原创 ZOJ#3210:A Stack or A Queue?

Memory Limit: 32768KB 64bit IO Format: %lld & %llu Description Do you know stack and queue? They’re both important dat

原创 HDU#2304:Electrical Outlets

Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Description Roy has just moved into a new ap