6个版本
0.2.3 | 2022年11月12日 |
---|---|
0.2.2 | 2022年11月12日 |
0.1.1 | 2022年11月11日 |
1269 在 编码
每月47次下载
9KB
165 行
仅仅是一个简单的TCP/UDP消息通信包装器。使用serde
在bincode
格式中进行数据序列化。需要类型派生serde::Serialize
用于发送和serde:Deserialize
用于接收消息。
考虑以下枚举
use serde::{Serialize, Deserialize};
#[derive(Debug, Serialize, Deserialize, PartialEq)]
enum Chat {
Connect,
Msg(String),
Close,
}
接收消息
use std::{io, net::TcpListener};
use stmc::tcp;
fn main() -> io::Result<()> {
let listener = TcpListener::bind(("127.0.0.1", 8080))?;
'server: for mut stream in listener.incoming().flatten() {
loop {
let msg: Chat = tcp::read(&mut stream)?;
match msg {
Chat::Connect => println!("new user connect: {}", stream.ttl()?),
Chat::Msg(txt) => println!("new message from {}: {txt}", stream.ttl()?),
Chat::Close => break 'server,
}
}
}
Ok(())
}
发送消息
use serde::{Deserialize, Serialize};
use std::{io, net::TcpStream};
fn main() -> io::Result<()> {
let mut stream = TcpStream::connect(("127.0.0.1", 8080))?;
tcp::send(Chat::Connect, &mut stream)?;
tcp::send(Chat::Msg("hi".into()), &mut stream)?;
tcp::send(Chat::Close, &mut stream)?;
Ok(())
}
要使用UDP协议,只需将tcp
改为udp
。
依赖项
~0.6–1.2MB
~28K SLoC