Skip to content

xor-bits/eznet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eznet

easy net lib

dependency status build status crates.io docs.rs

ENet/laminar style, Quinn (QUIC) based, simple to use and async net lib with configurable reliability and ordering.

Features:

  • Packets are encrypted (but not really securely TODO: 1)

  • Reliable ordered, reliable sequenced, reliable unordered, unreliable sequenced and unreliable unordered packets

  • Easy to use

  • Async/await

Example:

// examples/simple-server.rs
let mut listener = Listener::bind("127.0.0.1:13331".parse().unwrap()).unwrap();

while let Ok(socket) = listener.next().await {
    socket
        .send(Packet::ordered(format!("Hello {}!", socket.remote()), None))
        .await
        .unwrap();
}

// examples/simple-client.rs
let mut socket = Socket::connect("127.0.0.1:13331".parse().unwrap())
    .await
    .unwrap();

println!(
    "{}",
    std::str::from_utf8(&socket.recv().await.unwrap().bytes[..]).unwrap()
);

TODO:

  • Encryption doesn't protect from MITM attacks at the moment. Only self signed server side certificates are used and clients accept everything. Add certificates, private keys, server names and DNS. (1)

  • Open socket magic byte test to filter out random scanners and 'accidental' connections. (2)

  • Disconnect message when closing. (3)

  • Configurable buffer capacity. (4)

  • if packets are sent slightly faster than once per millisecond, none of them get actually sent, all of them are buffered. (5)

  • actually drop 'old' sequenced packets (6)

  • list of breaking versions and testing it when filtering (7)

  • More unit tests

  • Socket events. (Disconnect, Timeout, Packet, ...)

License

Licensed under either of MIT license or Apache-2.0 license.

I am not a lawyer.

MSRV

Currently the Minimum Supported Rust Version is 1.58. I do not care to 'minimize' this and it is what it is.

About

a simple net lib

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages