前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >tauri获取本机IP及出网IP

tauri获取本机IP及出网IP

原创
作者头像
薛定喵君
发布2024-09-19 13:48:42
发布2024-09-19 13:48:42
2261
举报
文章被收录于专栏:薛定喵君薛定喵君

背景

最近使用tauri开发的一款工具中需要根据网络环境判断限制软件功能的使用,记录下如何获取IP来判断是不是处在特定网络。

实现方式

通过tauricommand来获取本机IP,前端使用tauriapi获取公网IP

参考代码

主程序 src-tauri/src/main.rs 输入如下参考代码:

  1. 定义一个函数get_local_ip用于获取本机IP
代码语言:rust
复制
use std::net::TcpStream;
use std::net::IpAddr;

#[tauri::command]
fn get_ip() -> String {
    let local_ip = get_local_ip().unwrap();
    format!("{}", local_ip)
}

fn get_local_ip() -> Result<IpAddr, Box<dyn std::error::Error>> {
    let socket = std::net::UdpSocket::bind("0.0.0.0:0")?;
    socket.connect("8.8.8.8:80")?;
    let local_ip = socket.local_addr()?.ip();
    Ok(local_ip)
}
  1. main函数中注册调用该函数的命令:
代码语言:rust
复制
fn main() {
    tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![get_ip])
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}
  1. 在前端页面调用该命令获取本机IP:
代码语言:js
复制
const localIp = ref("");

async function getIp() {
  localIp.value = await invoke("get_ip");
}
  1. 在页面中引入taurihttp,请求第三方接口获取出网IP。
代码语言:js
复制
import { http } from "@tauri-apps/api";

const outerIp = ref("");

async function getOuterIp() {
  return await http.fetch('https://ifconfig.me/ip', {
    method: "get",
    responseType: 2,
  });
}

let ipRes = await getOuterIp()
outerIp.value = ipRes.data

然后我们就可以拿到本机IP及公网IP了。

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 实现方式
  • 参考代码
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档