我是靠谱客的博主 刻苦小霸王,最近开发中收集的这篇文章主要介绍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端)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复