Skip to content

rust-util-collections/sctpX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub top language Latest Version Rust Documentation Rust Minimum rustc version

SCTPx

A friendly rust-library for coding with SCTP protocol.

NOTE

You should enable the system-level sctp supports first, a kernel config example on linux-6.6.30:

Example

use sctpx::{client, server};
use ruc::{err::*, *};
use std::{sync::Arc, thread, time::Duration};

const ADDR: &str = "127.0.0.1:9999";

fn main() {
    thread::spawn(|| {
        let cb = |recvd: &[u8],
                  hdr: Arc<server::Hdr>,
                  peer: server::PeerAddr|
         -> Result<()> {
            assert_eq!(b"ABC", recvd);
            hdr
                .sendto(b"DEF", &peer)
                .map(|n| assert_eq!(n, 3)).c(d!())
        };
        pnk!(server::start_server(ADDR, None, cb, false));
    });

    // wait server to start
    thread::sleep(Duration::from_secs(1));

    let cli = pnk!(client::Hdr::new());
    assert_eq!(3, pnk!(cli.sendto_straddr(b"ABC", ADDR)));

    let buf = &mut [0; 8];
    let res = pnk!(cli.recvfrom(buf));
    assert_eq!(b"DEF", &buf[0..res.0]);
    assert_eq!(res.0, 3);
    assert_eq!(pnk!(res.1).to_string().as_str(), ADDR);
}