一、前言
网络开发是各种语言都绕不开的话题,所以本章就来详细介绍一下rust语言网络开发的技巧。
如果你还不理解网络的基本工作原理,可以先参考文章:网络编程。
二、TCP编程
首先依旧是TCP协议,相比于C++,在rust中进行网络编程就要简单的多了,因为其默认封装了大量的细节。
比如一个最简单的TCP回声服务器写法如下:
use std::{
io::{Read, Write},
net::TcpListener,
};
fn main() {
let listener = TcpListener::bind("127.0.0.1:8888").unwrap();
for cli in listener.incoming() {
let Ok(mut cli) = cli else {
println!("error:{:?}", cli.unwrap_err());
continue;
};
std::thread::spawn(move || loop {
let mut buf = [0; 1024]; //申请接收数据的缓冲区
let ret = cli.read(&mut buf); //开始接受数据
if let Err(e) = ret {
println!("接收数据失败:{}", e);
break;
};
println!(
"接收到来自客户端的数据:{}",
String::from_utf8(buf.to_vec()).unwrap() //使用from_utf8将字节数据转换为字符串进行输出。
);
let ret = cli.write_all(&buf); //将收到的数据重新发送给客户端
if let Err(e) = ret {
println!("发送数据失败:{}", e);
break;
}
});
}
}