Expand description
§std::net::TCP stream on steroids
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};
let mut stream = TcpStream::connect("www.rust-lang.org:443").unwrap();
stream.set_nonblocking(true).unwrap();
loop {
    if stream.try_connect().unwrap() {
        break;
    }
}
let mut stream = stream.into_tls("www.rust-lang.org", 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);
    }
}
while let Err(err) = stream.flush() {
    if err.kind() != io::ErrorKind::WouldBlock {
        panic!("error: {:?}", err);
    }
}
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));Structs§
- NativeTlsConnector 
- Reexport native-tls’s TlsConnectorA builder for client-side TLS connections.
- NativeTlsConnector Builder 
- Reexport native-tls’s TlsConnectorBuilderA builder forTlsConnectors.
- OpensslConnector 
- Reexport openssl’s TlsConnectorA type which wraps client-side streams in a TLS session.
- OpensslMethod 
- Reexport openssl’s TlsConnectorA type specifying the kind of protocol anSslContextwill speak.
- OwnedTLSConfig 
- Holds extra TLS configuration
- RustlsConnector 
- Reexport rustls-connector’s TlsConnectorThe connector
- RustlsConnector Config 
- Reexport rustls-connector’s TlsConnectorConfiguration helper forRustlsConnector
- TLSConfig
- Holds extra TLS configuration
Enums§
- AsyncTcpStream 
- Wrapper around plain or TLS async TCP streams
- HandshakeError 
- An error returned while performing the handshake
- Identity
- Holds one of:
- MidHandshakeTlsStream 
- A TLS stream which has been interrupted during the handshake
- OwnedIdentity 
- Holds one of:
- TcpStream
- Wrapper around plain or TLS TCP streams
Type Aliases§
- HandshakeResult 
- Holds either the TLS TcpStreamresult or the current handshake state
- NativeTlsAsync Stream 
- An async TcpStreamwrapped by native-tls
- NativeTlsHandshake Error 
- A HandshakeErrorfrom native-tls
- NativeTlsMid Handshake TlsStream 
- A MidHandshakeTlsStreamfrom native-tls
- NativeTlsStream 
- A TcpStreamwrapped by native-tls
- OpensslAsync Stream 
- An async TcpStreamwrapped by openssl
- OpensslError Stack 
- An ErrorStackfrom openssl
- OpensslHandshake Error 
- A HandshakeErrorfrom openssl
- OpensslMidHandshake TlsStream 
- A MidHandshakeTlsStreamfrom openssl
- OpensslStream 
- A TcpStreamwrapped by openssl
- RustlsAsync Stream 
- An async TcpStreamwrapped by rustls
- RustlsHandshake Error 
- A HandshakeErrorfrom rustls-connector
- RustlsMidHandshake TlsStream 
- A MidHandshakeTlsStreamfrom rustls-connector
- RustlsStream 
- A TcpStreamwrapped by rustls