#tauri-plugin #system-info #networking #detection #scan #port #host

sys tauri-plugin-network

用于检索系统信息的 tauri 插件

8 个版本 (2 个稳定版)

2.0.3-beta.12024年7月5日
2.0.3-beta.02024年7月3日
2.0.2 2024年6月21日
0.1.2 2024年6月20日
0.1.1 2023年8月17日

#450 in 网络编程

MIT 许可证

43KB
927

Tauri Plugin network

NPM Version Crates.io Version

API 文档:https://huakunshen.github.io/tauri-plugin-network/

这是一个用于读取网络接口信息和扫描网络的 Tauri 插件。

  • 支持 Tauri v1,在分支 v1 上 (包版本 1.x)
  • 支持 Tauri v2,在分支 v2 上 (包版本 2.x)

特性

  • 检索网络接口信息
  • TCP 主机上线检测
  • 使用 HTTP 在指定端口扫描本地网络 IP
    • 可选响应关键字检测
    • 多线程批量扫描
  • ICMP 扫描
  • 网络数据传输监控
  • 数据包嗅探(在 Windows 上较难,因为 pnet 需要 WinPcap 或 npcap)

安装

如果您是从 npm 和 crate.io 包注册表安装,请确保这两个包的版本相同,否则 API 可能不匹配。

Rust 安装

cargo add tauri-plugin-network 添加包。

或者在您的 Cargo.toml 中添加以下内容以获取最新未发布的版本(不推荐)。

tauri-plugin-network = { git = "https://github.com/HuakunShen/tauri-plugin-network", branch = "main" }

NPM 安装

运行以下命令安装 JavaScript/TypeScript API 包。

npm i tauri-plugin-network-api
# npm add https://github.com/HuakunShen/tauri-plugin-network # or this for latest unpublished version (not recommended)

main.rs 中,添加以下内容到您的 tauri::Builder

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_network::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

使用的第三方库

API

TypeScript

所有 TypeScript API 都可以在 api.ts 中找到。

每个 API 的返回类型已添加。对象结构可以在 types.ts 中找到。

使用了 Valibot 定义类型模式和推断 TypeScript 类型。您可以从 npm 包中导入导出的类型。

导出的valibot模式可以用于解析数据,并确保从rust API返回的数据与模式中定义的预期结构相匹配。

获取接口信息

import { getInterfaces, NetworkInterface } from "tauri-plugin-network-api";

function getInterfacesOnClick() {
  getInterfaces().then((ifaces: Array<Object>) => {
    const parsed = z.array(NetworkInterface).safeParse(ifaces);
    if (parsed.success) {
      data = JSON.stringify(parsed.data, null, 2);
    } else {
      error = parsed.error.toString();
    }
  });
}

扫描

import {
  isHttpPortOpen,
  isPortTaken,
  findAvailablePort,
  scanOnlineIpPortPairs,
  scanOnlineIpsByPort,
  nonLocalhostNetworks,
  localServerIsRunning,
  scanLocalNetworkOnlineHostsByPort,
} from "tauri-plugin-network-api";

console.log(await is_http_port_open("127.0.0.1", 8000));
console.log(await isPortTaken(8000));
console.log(await findAvailablePort());
console.log(
  await scanOnlineIpPortPairs([
    { ip: "127.0.0.1", port: 8000 },
    { ip: "192.168.3.6", port: 8000 },
    { ip: "192.168.3.5", port: 8000 },
  ])
);
console.log(
  await scanOnlineIpsByPort(["127.0.0.1", "192.168.3.6", "192.168.1.2"], 8000)
);
console.log("Non Localhost Networks", await nonLocalhostNetworks());
console.log("Local Server is Running", await localServerIsRunning(8000));
console.log(
  "Scan Local Network for service",
  await scanLocalNetworkOnlineHostsByPort(8000, "AppName")
);

用法

查看使用SvelteKit编写的示例:SvelteKit 示例

依赖项

~18–62MB
~1M SLoC