22

私は現在使用しています

public static String getLocalIPAddress(WifiManager wm){
    return Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
}

実行中のデバイスの IP アドレスを取得します。デバイスが「共通の」wlanネットワークに接続されている場合、およびデバイスがホットスポットを介して他のAndroidデバイスによってホストされているwifiネットワークに接続されている場合、これは正常に機能します。デバイスがどの wifi ネットワークにも接続されていない場合は、「0.0.0.0」が返されます (正しい)。ただし、デバイスがホットスポットを提供することで Wi-Fi ネットワークをホストしている場合、メソッドは引き続き「0.0.0.0」を返します。「独自のwifiネットワーク内」でホットスポットを提供するデバイスの実際のIPアドレスを取得するにはどうすればよいですか?

thx&よろしく

4

6 に答える 6

17

いくつかの異なるデバイスをテストしましたが、ホットスポットを提供するデバイスは常に192.168.43.1ネットワーク上に IP を持っているようです。誰かがこの仮定を確認/確認できますか?

于 2013-06-30T09:56:50.307 に答える
3

ホットスポットは、DHCP サーバーとして機能する可能性があります。それで、

Wi-Fi ホットスポットに接続した後にその IP アドレス (サーバー) を取得するには、リモート (クライアント) からメソッドを呼び出します。

intToInetAddress(wifiManager.getDhcpInfo().serverAddress);// get hotspot ip

それから

public InetAddress intToInetAddress(int hostAddress) 
{
    byte[] addressBytes = {(byte) (0xff & hostAddress),
            (byte) (0xff & (hostAddress >> 8)),
            (byte) (0xff & (hostAddress >> 16)),
            (byte) (0xff & (hostAddress >> 24))};

    try 
    {
        return InetAddress.getByAddress(addressBytes);
    } 
    catch (UnknownHostException e) 
    {
        throw new AssertionError();
    }
}

接続されたホットスポットのIPアドレスを返します。はい、ホットスポットのほとんどのデフォルトIPアドレスは192.168.43.1です

于 2016-09-20T11:08:55.113 に答える