#port #check #free #select

port-selector

port-selector是一个提供端口可用性检查、基于条件的端口过滤和占用指定端口的Rust库。

6个版本

0.1.6 2022年5月12日
0.1.5 2022年5月11日
0.1.3 2022年4月30日

网络编程类别中排名1007

Download history 655/week @ 2024-03-13 441/week @ 2024-03-20 510/week @ 2024-03-27 382/week @ 2024-04-03 1215/week @ 2024-04-10 626/week @ 2024-04-17 508/week @ 2024-04-24 455/week @ 2024-05-01 1747/week @ 2024-05-08 1297/week @ 2024-05-15 1029/week @ 2024-05-22 339/week @ 2024-05-29 473/week @ 2024-06-05 446/week @ 2024-06-12 420/week @ 2024-06-19 398/week @ 2024-06-26

每月下载量1,805
11个crate中使用了(直接使用6个)

MIT许可证

18KB
320

语言:🇺🇸 英语 | 🇨🇳 简体中文

port-selector

Build Status Crates Downloads Last Commit

Docs GitHub Actions CI LICENSE

概述

port-selector是一个提供端口可用性检查基于条件的端口过滤占用指定端口的Rust库。

安装

  1. 获取最新版本 -> https://crates.io/crates/port-selector

  2. 添加依赖

[dependencies]
port-selector = "0.1.5"
  1. use
use port_selector::{is_free, Port};

fn main() {
    let check_port: Port = 3000;
    println!("is_free({}) = {}", check_port, is_free(check_port));
}

商品

type -> Port · Selector

fn -> is_free_tcp · is_free_udp · is_free · random_free_tcp_port · random_free_udp_port · random_free_port · select_from_given_port · select_free_port · take_up_tcp_port · take_up_udp_port · take_up_port · random_take_up_tcp_port · random_take_up_udp_port · random_take_up_port

文档

端口

u16类型别名

pub type Port = u16;

选择器

select_free_port需要一个结构体传入

pub struct Selector {
    // Check whether the port is available on TCP.
    // The default value is true.
    pub check_tcp: bool,
    // Check whether the port is available on UDP.
    // The default value is true.
    pub check_udp: bool,
    // Set the range of generated ports, default (0, 65525)
    pub port_range: (u16, u16),
    // Maximum number of random times. Default value: 100
    // If no available port number is found within the maximum random number of loops, None is returned
    pub max_random_times: u16,
}

is_free_tcp

检查端口在TCP上是否未被使用

pub fn is_free_udp(port: Port) -> bool

is_free_udp

检查端口在UDP上是否未被使用

pub fn is_free_udp(port: Port) -> bool

is_free

检查端口在TCP和UDP上是否未被使用

pub fn is_free(port: Port) -> bool

random_free_tcp_port

系统随机分配可用的TCP端口

pub fn random_free_tcp_port() -> Option<Port>

random_free_udp_port

系统随机分配可用的UDP端口

pub fn random_free_udp_port() -> Option<Port>

random_free_port

系统随机分配可用的TCP和UDP端口

pub fn random_free_port() -> Option<Port>

select_from_given_port

given_port检查并返回第一个可用的端口号

如果given_port可用则返回;否则given_port += 1直到端口可用

pub fn select_from_given_port(given_port: Port) -> Option<Port>

select_free_port

根据Selector参数约束获取匹配的端口号

pub fn select_free_port(selector: Selector) -> Option<Port>

take_up_tcp_port

在tcp上占用端口

fn take_up_tcp_port(port: Port) -> bool

take_up_udp_port

在udp上占用端口

fn take_up_udp_port(port: Port) -> bool

take_up_port

在tcp和udp上占用端口

fn take_up_port(port: Port) -> bool

random_take_up_tcp_port

系统随机占用tcp端口

fn random_take_up_tcp_port() -> Port

random_take_up_udp_port

系统随机占用udp端口

fn random_take_up_udp_port() -> Port

random_take_up_port

系统随机占用tcp和udp端口

fn random_take_up_port() -> Port

感谢

portpicker-rs

依赖

~310KB