面试题答案
一键面试基本流程
- 引入依赖:在
Cargo.toml
文件中添加tokio
依赖,一般会同时引入futures
相关库辅助处理异步任务。 - 创建异步函数:使用
async
关键字定义异步函数,这些函数用于执行具体的读取或写入操作。 - 使用异步 I/O 流:Tokio 提供了多种异步 I/O 流,如
TcpStream
等。通过这些流的异步方法来进行读取和写入。例如,read
方法用于异步读取数据,write
方法用于异步写入数据。这些方法返回Future
,需要使用await
来等待操作完成。 - 运行异步任务:通过
tokio::runtime::Runtime
或者tokio::main
宏来运行异步任务。
简单示例代码
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio::net::TcpStream;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// 连接到服务器
let mut stream = TcpStream::connect("127.0.0.1:8080").await?;
// 写入数据
let write_buf = b"Hello, server!";
stream.write_all(write_buf).await?;
// 读取数据
let mut read_buf = [0; 1024];
let n = stream.read(&mut read_buf).await?;
let received = &read_buf[..n];
println!("Received: {}", std::str::from_utf8(received)?);
Ok(())
}
此代码实现了与本地 127.0.0.1:8080
服务器的连接,发送一段消息并接收服务器返回的数据。