Javaでインタフェースのトラフィックをどのように監視するか
ネットワークインターフェースとTrafficStatsクラスを使用すると、Javaでインターフェイストレーフィックを監視できます。
最初にネットワークインターフェイスのすべてのオブジェクトを取得するために、Network InterfaceクラスのgetNetworkInterfaces()メソッドを使用します。 次に、特定のUID(ユーザーID)の受信および送信バイト数を取得するために、TrafficStatsクラスのgetUidRxBytes()およびgetUidTxBytes()メソッドを使用します。
インターフェースのトラフィックを監視するための、簡単なサンプルコードを以下に示します。
import java.net.NetworkInterface;
import java.net.SocketException;
import android.net.TrafficStats;
public class InterfaceMonitor {
public static void main(String[] args) {
try {
// 获取所有网络接口
NetworkInterface[] interfaces = NetworkInterface.getNetworkInterfaces();
if (interfaces != null) {
for (NetworkInterface iface : interfaces) {
// 获取接口名称
String name = iface.getName();
System.out.println("Interface name: " + name);
// 获取接收和发送字节数
long rxBytes = TrafficStats.getUidRxBytes(iface.getIndex());
long txBytes = TrafficStats.getUidTxBytes(iface.getIndex());
System.out.println("Received bytes: " + rxBytes);
System.out.println("Transmitted bytes: " + txBytes);
}
}
} catch (SocketException e) {
e.printStackTrace();
}
}
}
上述のコード内にある TrafficStats クラスのメソッドにはインターフェースのインデックス番号(index) を渡す必要があります。ネットワークインターフェースのインデックス番号は、NetworkInterface クラスの getIndex() メソッドを使って取得できます。
Java でインターフェイス経由でフロー制御を設定可能になります。