5

Android 用の wifi-direct アプリケーションを作成しています。デバイスへのソケット接続を試みています。グループ所有者の意図機能が機能していないように見えるため (ランダムに割り当てられているように見えるだけです)、クライアントの IP アドレスをホストに転送する方法を見つける必要があります。私が知っている唯一のアドレスは、WifiP2pManager が取得できるグループ情報オブジェクトに含まれるホスト デバイスです。どのデバイスがホストで、どのデバイスがクライアントであるかを知っているので、ソケットを開いて接続を確立したり、他のデバイスへの接続を試みたりできます。

「ホスト」デバイスがグループ所有者である場合、Wifi P2P (Wifi Direct) クライアントのデバイスの IP アドレスを転送する方法を見つける必要があります。ホストがグループの所有者である場合、クライアントのソケットに接続する方法がありません。ちょっとややこしいですが、こんな感じです。

ARPテーブルからIPアドレスを取得するようなものを見てきましたが、Wi-FiインターフェイスがWifiダイレクトに対して無効になっているため、ARPテーブルはわずか数秒(1分など)とICSで自動的にクリアされるようです。 arp テーブル内のすべてを参照してください。

これは簡単だと思いますが、私は Linux にあまり詳しくないので、どのファイルがネットワーク インターフェイスの設定を保持しているのかわかりません。ネットワーク インターフェイスの IP アドレスを取得する方法はありますか? または、少なくとも Wifi P2P インターフェイスですか? (注: これは Wi-Fi アドレスではありません。Wifi Direct であることを除いて、テザリング アドレスと似ています。WifiManager はこれを返しません)。

ありがとう、
Mgamerz

4

1 に答える 1

1
DhcpInfo dhcpInfo = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE)).getDhcpInfo();
String ipaddress = intToIp(dhcpInfo.ipAddress)

intToIp(int integer) {
        return (integer & 0xFF) + "." + ((integer >> 8) & 0xFF) + "."
                + ((integer >> 16) & 0xFF) + "." + ((integer >> 24) & 0xFF);
    }

上記のコードは、IPアドレスを取得するのに役立ちます...

使用できるソケットを介してホストに接続しているクライアントのIPアドレスを取得するには..clientSocket=this.serverSocket.accept(); clientSocket.getInetAddress();

于 2013-02-10T11:47:48.627 に答える