我是靠谱客的博主 刻苦小霸王,这篇文章主要介绍Rust语言 实现UDP网络聊天室(serve端)Rust语言 实现UDP网络聊天室(serve端),现在分享给大家,希望可以做个参考。

Rust语言 实现UDP网络聊天室(serve端)

use std::net::UdpSocket;
use std::thread;
use std::time;

废话不多说,首先是使用的三个库,分别是UDPSocket,thread以及time库

创建动态数组来存放从客户端的信息,设置10s等待时间以及绑定UDP端口

 let mut client = vec![];
 let mut cnt = 0;
 let ten_millis = time::Duration::from_millis(10);
 let socket = UdpSocket::bind(String::from("192.168.136.xx:9520"));
 println!("UDP Char App");
 if socket.is_err()
    {
        return;
    }
 let socket = socket.unwrap();
 let mut tmp:bool = true;

接下来是使用一个大循环来不断接收来自客户端的信息,并将信息进行转发

    loop{
    let mut buf = [0u8; 256];
    let (amt, src) = socket.recv_from(&mut buf).unwrap();
    thread::sleep(ten_millis);//休眠等待10s
    if amt==0{ //如果接收的字节数为0,则进行下一次循环
        continue;
    }
    let buf = &mut buf[..amt];//设置数组长度为接收字节长度
    let mut info = String::new();
    //解析接收到的信息并存为一个字符串
    for v in buf
    {
        if 'n' == (*v as char) || 'r' == (*v as char)//将字节转义为字符
        {
            continue;
        }
        info.push(*v as char);
    }
    println!("recv:{}",info);
    tmp = true;
    //如果client内部为空,将当前客户端地址存入client[]
    if cnt == 0
    {
    client.push(src);
    cnt += 1;
    }
    //判断当前客户端地址在client[]内是否重复
    else{
        for i in &client{
            if *i == src{
                tmp = false;
                break;
            }
        }
     if tmp == true{
        client.push(src);
        cnt += 1;
    }}
//向client数组内存放的客户端发送消息
    for cl in &client{
    socket.send_to(info.as_bytes(),*cl).unwrap();
    }
    };
}

最后

以上就是刻苦小霸王最近收集整理的关于Rust语言 实现UDP网络聊天室(serve端)Rust语言 实现UDP网络聊天室(serve端)的全部内容,更多相关Rust语言内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(127)

评论列表共有 0 条评论

立即
投稿
返回
顶部