跳到主要内容

TCP Echo Server

Echo Server 会把收到的数据原样发回去。它很适合用来理解 TCP 的监听、连接、读取和写入。

服务端代码

src/main.rs
use std::io::{Read, Write};
use std::net::TcpListener;

fn main() -> std::io::Result<()> {
let listener = TcpListener::bind("127.0.0.1:7878")?;
println!("listening on 127.0.0.1:7878");

for stream in listener.incoming() {
let mut stream = stream?;
let mut buf = [0; 1024];

let n = stream.read(&mut buf)?;
stream.write_all(&buf[..n])?;
}

Ok(())
}

测试服务

启动服务后,可以在另一个终端使用 nc 测试:

nc 127.0.0.1 7878

输入:

hello

你会收到同样的内容。

这个版本的限制

这个示例一次只处理一个连接,而且每个连接只读一次。它适合学习 TCP 基本流程,不适合作为生产服务器。

小结

TCP Server 的基本步骤是:bind 地址,incoming 接收连接,从 TcpStream 读取数据,再写回响应。