002 Rust 網路程式設計,實現 UDP 伺服器和客戶端

linghuyichong發表於2020-04-25

本例子用Rust實現一個基於UDP的服務端和客戶端的程式。服務端收到字串後,做一個逆序,然後返回。

udp主要用到net庫中的UdpSocket。

服務端

use std::net::UdpSocket;

fn main() -> std::io::Result<()> {
    let socket = UdpSocket::bind("127.0.0.1:8080")?;

    loop {
        let mut buf = [0u8; 1500];
        let (amt, src) = socket.recv_from(&mut buf)?;

        let buf = &mut buf[..amt];
        buf.reverse();
        socket.send_to(buf, &src)?;
    }
}

客戶端

use std::net::UdpSocket;
use std::{io, str};

fn main() -> std::io::Result<()> {
    let socket = UdpSocket::bind("127.0.0.1:8000")?;
    socket.connect("127.0.0.1:8080")?;

    loop {
        let mut input = String::new();
        io::stdin().read_line(&mut input)?;
        socket.send(input.as_bytes())?;

        let mut buffer = [0u8; 1500];
        socket.recv_from(&mut buffer)?;

        println!(
            "recv: {}",
            str::from_utf8(&buffer).expect("Could not write buffer as string")
        );
    }
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結
令狐一衝

相關文章