use std::net::TcpListener;
fn main() {
let listener = TcpListener::bind("127.0.0.1:2333").unwrap();
println!("Running on port 2333...");
for stream in listener.incoming() {
let _stream = stream.unwrap();
println!("Connection established!");
}
}
初步运行
以下是运行的效果;
三、TCP Client
进入子项目tcpclient,转到 src/main.rs;
具体步骤如下:
库引入
引入Rust自带库 std::net::TcpStream;
创建一个数据流实例来连接指定地址的服务端;
use std::net::TcpStream;
fn main() {
let stream = TcpStream::connect("127.0.0.1:2333").unwrap();
}
运行效果
Client
Server
四、消息收发
由于所引入的网络编程库中实现了读写的 Trait,因此需要引入两个 Trait
std::io::{Read, Write}
TCP消息传送中的读写使用原始字节串形式;
Server
use std::net::TcpListener;
use std::io::{Read, Write};
fn main() {
let listener = TcpListener::bind("127.0.0.1:2333").unwrap();
println!("Running on port 2333...");
for stream in listener.incoming() {
let mut stream = stream.unwrap();
println!("Connection established!");
let mut buffer = [0; 1024];
stream.read(&mut buffer).unwrap();
stream.write(&mut buffer).unwrap();
}
}
Client
客户端处需要额外进入库 std::str
use std::net::TcpStream;
use std::io::{Read, Write};
use std::str;
fn main() {
let mut stream = TcpStream::connect("127.0.0.1:2333").unwrap();
stream.write("Here's CLient End".as_bytes()).unwrap();
let mut buffer = [0; 17]; // 此处的 17 是为配合消息的长度
stream.read(&mut buffer).unwrap();
println!("Response from server: {:?}",
str::from_utf8(&mut buffer).unwrap() // utf-8编码形式接收
);
}