#实验性 #传输层 #安全 #协议 #P2P #主机 #tokio

bin+lib bluefin

实验性、安全、P2P、传输层协议

5 个版本

0.1.4 2023年4月16日
0.1.3 2023年4月15日
0.1.2 2023年3月26日
0.1.1 2023年3月18日
0.1.0 2023年3月15日

#29 in #传输层

MIT 许可证

78KB
1.5K SLoC

Bluefin

Bluefin 是一个实验性、P2P、传输层协议。

Latest Version Documentation Github Workflow License: MIT

示例

打包领导者

use bluefin::hosts::pack_leader::BluefinPackLeaderBuilder;

#[tokio::main]
async fn main() {
    // Bind and construct a pack-leader over an TUN device
    let mut pack_leader = BluefinPackLeader::builder()
        .name("utun3".to_string())
        .bind_address("192.168.55.2".to_string())
        .netmask("255.255.255.0".to_string())
        .build();

    loop {
        let connection_res = pack_leader.accept().await;

        tokio::spawn(async move {
            match connection_res {
                Ok(conn) => println!("Conn ready! {conn})"),
                Err(err) => eprintln!("\nConnection attempt failed: {:?}", err),
            }
        });

        sleep(Duration::from_secs(1)).await;
    }
}

客户端

#[tokio::main]
async fn main() -> std::io::Result<()> {
    let mut client = BluefinClient::builder()
        .name("test_client".to_string())
        .build();

    let port = rand::thread_rng().gen_range(10000..50000);
    client
        .bind("0.0.0.0", port)
        .expect("Failed to bind client socket");
    let mut conn = client
        .connect("192.168.55.2", 31416)
        .await
        .expect("Failed to connect to host");

    eprintln!("Conn ready! {conn}");
    Ok(())
}

依赖项

~6–13MB
~147K SLoC