8 个版本 (2 个稳定版)
2.0.3-beta.1 | 2024年7月5日 |
---|---|
2.0.3-beta.0 | 2024年7月3日 |
2.0.2 | 2024年6月21日 |
0.1.2 | 2024年6月20日 |
0.1.1 | 2023年8月17日 |
#450 in 网络编程
43KB
927 行
Tauri Plugin network
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