在CentOS上搞Rust网络编程,这事儿其实比想象中要直接得多。先别急着写代码,把环境搭好才是正经事。下面咱们一步步来,从零开始,把整个流程跑通。

装好Rust——这是所有工作的前提。用下面这条命令就能搞定,它会自动下载安装脚本并执行:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh装完之后,记得把Rust加到PATH里,否则命令行找不到
rustc和cargo:source $HOME/.cargo/env新建一个Rust项目——用
cargo new命令,名字随你取,比如叫rust_network_program:cargo new rust_network_program cd rust_network_program添加依赖——网络编程免不了要用现成的库。如果打算用异步框架,
tokio和hyper是经典组合。打开Cargo.toml,在[dependencies]下面加上:[dependencies] tokio = { version = "1", features = ["full"] } hyper = "0.14"当然,如果你只是做个简单的TCP实验,标准库就够了,这一步可以跳过。
写网络代码——打开
src/main.rs,开始撸代码。下面这个例子是一个TCP回显服务器,监听8080端口,收到什么就返回什么:use std::io::{Read, Write}; use std::net::{TcpListener, TcpStream}; fn handle_client(mut stream: TcpStream) { let mut buffer = [0; 512]; loop { let bytes_read = match stream.read(&mut buffer) { Ok(n) if n == 0 => return, Ok(n) => n, Err(e) => { eprintln!("Error reading from socket: {:?}", e); return; } }; if let Err(e) = stream.write_all(&buffer[..bytes_read]) { eprintln!("Error writing to socket: {:?}", e); return; } } } fn main() -> std::io::Result<()> { let listener = TcpListener::bind("127.0.0.1:8080")?; for stream in listener.incoming() { match stream { Ok(stream) => { std::thread::spawn(|| handle_client(stream)); } Err(e) => { eprintln!("Error: {}", e); } } } Ok(()) }这段代码每收到一个连接,就新开一个线程去处理,算是多线程TCP服务器的入门模板。
运行程序——保存好代码后,在项目目录下执行:
cargo run编译和运行一气呵成。第一次编译会慢一点,因为要下载依赖并构建,后面就快了。
测试网络服务——最简单的办法是用
telnet连上去试试:telnet 127.0.0.1 8080随便输入点东西,如果服务器原样返回,说明跑通了。当然,你也可以自己写个客户端程序来测,这里就不展开了。
这只是一个基础的入门示例。Rust的网络编程生态远不止这些——异步编程、TLS/SSL、Unix域套接字,甚至自定义协议解析,都有成熟的库支持。具体怎么用,还得看官方文档或对应库的说明。不过,先把上面这条路走通,后面再深入就会轻松很多。