3

私は現在、一種のwifiスニファを開発しています。これを実現するために、arm用にコンパイルされたtcpdumpバイナリを使用します。しかし、それは私がWifiインターフェースの名前を知っていることを前提としています。

SDKのドキュメントによると、NetworkInterfaceはgetName()メソッドを提供します。
このメソッドを使用する予定なので、最初のステップは、wifiインターフェイスに対応するNetworkInterfaceオブジェクトを取得することです。
これを行うには、WifiInfoを使用してIPアドレスを取得し、次にこのIPに対応するInetAddressを取得し、最後に静的メソッドgetByInetAddress(InetAddress address)を使用してNetworkInterfaceのインスタンスを取得します。

これが私のコードです:

WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
byte[] bytes = BigInteger.valueOf(ipAddress).toByteArray();
InetAddress addr = InetAddress.getByAddress(bytes);
NetworkInterface netInterface = NetworkInterface.getByInetAddress(addr);
Log.e("MyTemp",netInterface.getName());

出力 :

SSID: Nancy-Universite, BSSID: 00:19:30:6a:a9:40, MAC: B4:07:F9:D5:7C:8C, Supplicant    state: COMPLETED, RSSI: -80, Link speed: 11, Net ID: 6

しかし、私は次のようなものを除いて:

eth0

isVirtual()メソッドも試しましたが、コンパイルされず、メソッドisVirtual()がタイプNetworkInterfaceに対して定義されていないというエラーメッセージが表示されます。何が起こっているのかわかりません...
どんな助けでもありがたいです。

4

6 に答える 6

4

あなたがしなければならないのは、変更することだけです

Log.e("MyTemp",netInterface.getName());

Log.e("MyTemp",netInterface.getDisplayName());
于 2011-07-18T15:53:45.083 に答える
1

これを使用してください: String interfaceName = SystemInfo.getInstance().getProperty("wifi.interface");

これは間違いなくうまくいく..

于 2012-07-09T06:44:03.100 に答える
1

これを試して

for(Enumeration<NetworkInterface> list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();)
    {
            NetworkInterface i = list.nextElement();
            Log.e("network_interfaces", "display name " + i.getDisplayName());
    }
于 2011-06-04T17:55:48.770 に答える
0

結果を呼び出し/system/ip linkて解析できます。

bash-3.2# ip link
ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: usb0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 6e:3d:7a:3a:62:ee brd ff:ff:ff:ff:ff:ff
3: usb1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether da:bb:3f:04:1b:cd brd ff:ff:ff:ff:ff:ff
4: sit0: <NOARP> mtu 1480 qdisc noop state DOWN
    link/sit 0.0.0.0 brd 0.0.0.0
5: ip6tnl0: <NOARP> mtu 1460 qdisc noop state DOWN
    link/tunnel6 :: brd ::
6: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 32
    link/ether 76:3c:4e:23:cc:f8 brd ff:ff:ff:ff:ff:ff
7: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN qlen 32
    link/ether 02:17:54:31:ff:bd brd ff:ff:ff:ff:ff:ff
8: tun: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 500
    link/ether b2:b7:11:da:7c:6a brd ff:ff:ff:ff:ff:ff
16: tiwlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 100
    link/ether 40:fc:89:e4:67:4c brd ff:ff:ff:ff:ff:ff
于 2012-03-01T03:49:07.040 に答える