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();
while !stream.is_connected() {
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);
}
}
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));
Structs§
- Native
TlsConnector - Reexport native-tls’s
TlsConnector
A builder for client-side TLS connections. - Open
SslConnector - Reexport openssl’s
TlsConnector
A type which wraps client-side streams in a TLS session. - Open
SslMethod - Reexport openssl’s
TlsConnector
A type specifying the kind of protocol anSslContext
will speak. - OwnedTLS
Config - Holds extra TLS configuration
- Rustls
Connector - Reexport rustls-connector’s
TlsConnector
The connector - Rustls
Connector Config - Reexport rustls-connector’s
TlsConnector
Configuration helper forRustlsConnector
- TLSConfig
- Holds extra TLS configuration
Enums§
- Handshake
Error - An error returned while performing the handshake
- Identity
- Holds one of:
- MidHandshake
TlsStream - A TLS stream which has been interrupted during the handshake
- Owned
Identity - Holds one of:
- TcpStream
- Wrapper around plain or TLS TCP streams
Type Aliases§
- Handshake
Result - Holds either the TLS
TcpStream
result or the current handshake state - Native
TlsHandshake Error - A
HandshakeError
from native-tls - Native
TlsMid Handshake TlsStream - A
MidHandshakeTlsStream
from native-tls - Native
TlsStream - A
TcpStream
wrapped by native-tls - Open
SslError Stack - An
ErrorStack
from openssl - Open
SslHandshake Error - A
HandshakeError
from openssl - Open
SslMid Handshake TlsStream - A
MidHandshakeTlsStream
from openssl - Open
SslStream - A
TcpStream
wrapped by openssl - Rustls
Handshake Error - A
HandshakeError
from rustls-connector - Rustls
MidHandshake TlsStream - A
MidHandshakeTlsStream
from rustls-connector - Rustls
Stream - A
TcpStream
wrapped by rustls