Skip to main content

stream/
stream.rs

1extern crate sctp;
2use sctp::*;
3
4use std::io::prelude::*;
5
6fn main() {
7    // Create a new one-to-one stream
8    match SctpStream::connect("127.0.0.1:3868") {
9        //	match SctpStream::connectx(&["10.0.2.15:3868", "127.0.0.1:3868"]) {
10        Err(e) => println!("{:?}", e.kind()),
11        Ok(mut peer) => {
12            // Set SCTP no delay
13            println!("{}", peer.has_nodelay().unwrap());
14            peer.set_nodelay(true).unwrap();
15            println!("{}", peer.has_nodelay().unwrap());
16
17            // Set socket send buffer size
18            let oldsize = peer.get_buffer_size(SoDirection::Send).unwrap();
19            peer.set_buffer_size(SoDirection::Send, 4096).unwrap();
20            println!(
21                "Set send buffer size to {} (was : {})",
22                peer.get_buffer_size(SoDirection::Send).unwrap(),
23                oldsize
24            );
25
26            println!("Setting read timeout to 10 s");
27            peer.set_timeout(SoDirection::Receive, 10).unwrap();
28
29            // Write a message using the io::Write trait
30            peer.write_all("foo bar\n".as_bytes()).unwrap();
31            // Write a message on stream 6
32            peer.sendmsg("foo bar again\n".as_bytes(), 6).unwrap();
33            let mut data = [0u8; 1024];
34            // Read data using the io::Read trait
35            peer.read_exact(&mut data).unwrap();
36            // Read data using SCTP advanced feature, and retrieve the stream id
37            // on which data were received
38            let (size, stream) = peer.recvmsg(&mut data).unwrap();
39            println!("Received {} bytes on stream {}", size, stream);
40        }
41    }
42}