70个版本
新 0.29.2 | 2024年8月20日 |
---|---|
0.29.1 | 2024年6月22日 |
0.28.0 | 2024年4月24日 |
0.27.1 | 2024年1月2日 |
0.4.1 | 2019年6月26日 |
#1052 in 网络编程
146,406 monthly downloads
在 88 个crate中使用 (2直接)
33KB
606 行
std::net::TcpStream的增强版
tcp-stream是一个库,旨在为std::net::TcpStream提供TLS支持
关于rustls加密后端的警告
必须使用功能标志在rustls中启用加密实现。我们模仿rustls的行为,为每个实现提供一个功能标志,默认情况下与rustls相同。可用的选项有
rustls--aws_lc_rs
(默认)rustls--ring
示例
连接到远程服务器
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));
}
依赖项
~0–19MB
~369K SLoC