Android 程式設計下流量監測的實現原理

2021-09-06 07:59:58 字數 1544 閱讀 4639

linux 系統下所有的資訊都是以檔案的形式存在的,所以應用程式的流量資訊也會被儲存在作業系統的檔案中。android 2.2 版本以前的系統的流量資訊都存放在 proc/net/dev(或者 proc/self/net/dev)檔案下,讀取檔案然後對其進行解析就行了。讀取某乙個應用的流量,則讀取proc/uid_stat/uid /tcp_rcv 檔案進行解析(注:模擬器下不存在這個目錄)。如需檢視某個應用的流量資訊,可以通過以下命令來實現:

adb devices                         列出所有裝置

adb -s 裝置名稱 shell 進入對應的裝置

cd proc 進入裝置的屬性目錄

cd uid_stat 進入 user id 狀態目錄,每個應用程式在安裝的時候系統會為每個應用分配乙個對應的 uid

ls 列出 uid_stat 目錄下所有應用對應的 user id 目錄

cd uid 進入對應應用的 uid 目錄

ls 檢視對應 uid 目錄下的 tcp_rcv 和 tcp_snd 目錄

cat tcp_rcv 檢視該應用接收的資料資訊

cat tcp_snd 檢視該應用傳送的資料資訊

android 2.2 版本中加入了 trafficstats 類來實現對流量統計的操作,其實 trafficstats 類自身也是依靠讀取 linux 下儲存流量資訊的檔案並進行解析來實現的。android.net.trafficstats 類中提供了多種靜態方法,可以直接呼叫獲取,返回型別均為 long 型,如果返回值等於 -1 代表 unsupported,表示當前裝置不支援統計,這裡需要注意的是,

通過 trafficstats 獲取的資料在手機重啟的時候會被清空,所以,如果要對流量進行持續的統計需要將資料儲存到資料庫中,在手機重啟時將資料讀出進行累加即可。trafficstats 類的靜態方法如下:

package

cn.sunzn.trafficmanger;

import

import

android.net.trafficstats;

import

android.os.bundle;

import

android.view.menu;

public

class mainactivity extends

activity

public

boolean

oncreateoptionsmenu(menu menu)

}

android流量監測的實現原理

2.2版本以前的,系統的流量資訊都存放在proc net dev 或者proc self net dev 檔案下,讀取檔案然後對其進行解析就行了。讀取某乙個應用的流量,則讀取proc uid stat uid tcp rcv檔案進行解析 據說模擬器下是沒有這個目錄檔案的 對於android流量統計來...

關於網路流量的實時監測

這個問題考慮了很長時間了,但一直沒有親自動手準備,還是查查相關資料吧.記錄幾個關鍵字,以備以後使用 sniffer 實時監測軟體 使用的相關技術主要有 1.winpcap 乙個比較通用的庫,相信做過抓包的工具大多數人都不會太陌生 2.raw socket 在2000以後的版本都支援此項功能,2000...

分享乙個linux的流量監測工具!!!(3)

這個配置檔案監控了 vsftpd,sshd,mysql,apache,postfix 服務,設定 web監控的埠是 2812 設定lvsheat qq.com 將接受到警告郵件。配置apache 的檢查資訊 mkdir var www monit echo hello var www monit t...