Flutter:AndroidでローカルIPアドレスを取得する
Aug 21 2020
Flutterで(Android)デバイスのローカルIPアドレスを取得するにはどうすればよいですか?これは
- WIFIに接続したときにルーターからDHCP経由で割り当てられたローカルIPアドレス
- VPNに接続されている場合、VPNサーバーによって割り当てられたVPNネットワークのローカルIPアドレス(VPNサーバー自体によって割り当てられたグローバルIPアドレスではありません)
- 携帯電話経由で接続した場合のグローバルIP
回答
1 JulianAßmann Sep 02 2020 at 05:53
私は今のところこのようにそれを解決しました、しかしあなたがより良い解決策を持っているなら、それは誠実でしょう:
static Future<String> getLocalIpAddress() async {
final interfaces = await NetworkInterface.list(type: InternetAddressType.IPv4, includeLinkLocal: true);
try {
// Try VPN connection first
NetworkInterface vpnInterface = interfaces.firstWhere((element) => element.name == "tun0");
return vpnInterface.addresses.first.address;
} on StateError {
// Try wlan connection next
try {
NetworkInterface interface = interfaces.firstWhere((element) => element.name == "wlan0");
return interface.addresses.first.address;
} catch (ex) {
// Try any other connection next
try {
NetworkInterface interface = interfaces.firstWhere((element) => !(element.name == "tun0" || element.name == "wlan0"));
return interface.addresses.first.address;
} catch (ex) {
return null;
}
}
}
}