我是靠谱客的博主 刻苦小霸王,最近开发中收集的这篇文章主要介绍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语言 实现UDP网络聊天室(serve端)Rust语言 实现UDP网络聊天室(serve端)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部