12.rust网络编程基础

一、前言

网络开发是各种语言都绕不开的话题,所以本章就来详细介绍一下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;
            }
        });
    }
}

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux