如果是内网地址,可以使用NetworkInterface;如果想获取公网ip,可行方法之一是通过http请求ip查询网站,然后解析请求结果得到
import 'dart:io';
import 'dart:convert';
//改获取内网的方法仅支持ios
main(List<String> args) async {
// 内网ip
for (var interface in await NetworkInterface.list()) {
for (var addr in interface.addresses) {
print('${addr.address}');
}
}
// 外网ip
var ipRegexp = RegExp(
r'((?:(?:25[0-5]|2[0-4]\d|(?:1\d{2}|[1-9]?\d))\.){3}(?:25[0-5]|2[0-4]\d|(?:1\d{2}|[1-9]?\d)))');
var url = 'http://www.ip.cn/';
var client = HttpClient();
var request = await client.getUrl(Uri.parse(url));
var reponse = await request.close();
reponse.transform(utf8.decoder).forEach((line) {
ipRegexp.allMatches(line).forEach((match) {
print(match.group(0));
});
});
Flutter的NetworkInterface好像只支持ios,只能使用插件了获取内网ip:https://pub.flutter-io.cn/packages/get_ip 50
<nav class="post-controls clearfix"></nav>
网友评论