66 releases

0.27.1 Jan 2, 2024
0.27.0 Dec 14, 2023
0.26.1 Jul 8, 2023
0.24.4 May 29, 2022
0.4.1 Jun 26, 2019

#1190 in Network programming

Download history 10091/week @ 2023-12-23 21711/week @ 2023-12-30 29384/week @ 2024-01-06 27757/week @ 2024-01-13 27645/week @ 2024-01-20 30382/week @ 2024-01-27 29140/week @ 2024-02-03 33543/week @ 2024-02-10 25012/week @ 2024-02-17 25772/week @ 2024-02-24 27762/week @ 2024-03-02 29170/week @ 2024-03-09 25627/week @ 2024-03-16 23526/week @ 2024-03-23 27661/week @ 2024-03-30 23755/week @ 2024-04-06

105,372 downloads per month
Used in 86 crates (2 directly)

BSD-2-Clause

32KB
602 lines

std::net::TcpStream on steroids

API Docs Build status Downloads

tcp-stream is a library aiming at providing TLS support to std::net::TcpStream

Examples

To connect to a remote server:

use tcp_stream::{HandshakeError, TcpStream, TLSConfig};

use std::io::{self, Read, Write};

fn main() {
    let stream = TcpStream::connect("google.com:443").unwrap();
    let mut stream = stream.into_tls("google.com", TLSConfig::default());

    while let Err(HandshakeError::WouldBlock(mid_handshake)) = stream {
        stream = mid_handshake.handshake();
    }

    let mut stream = stream.unwrap();

    while let Err(err) = stream.write_all(b"GET / HTTP/1.0\r\n\r\n") {
        if err.kind() != io::ErrorKind::WouldBlock {
            panic!("error: {:?}", err);
        }
    }
    stream.flush().unwrap();
    let mut res = vec![];
    while let Err(err) = stream.read_to_end(&mut res) {
        if err.kind() != io::ErrorKind::WouldBlock {
            panic!("stream error: {:?}", err);
        }
    }
    println!("{}", String::from_utf8_lossy(&res));
}

Dependencies

~0–13MB
~142K SLoC