0
点赞
收藏
分享

微信扫一扫

Rust Web 全栈开发 - 1 构建TCP Server

1. 构建TCP Server

具体来说就是要编写一个TCP Server 和 Client,然后让他们通信

先创建一个文件夹并打开

cargo new s1 && cd s1 

再创建两个文件夹

cargo new tcpserver
cargo new tcpclient

s1实际上是一个工作工作空间,可以容纳多个Rust项目,它可以将多个Rust项目作为一个单元来管理

我们改一下Cargo.toml中的内容

[workspace]

members = ["tcpserver","tcpclient"]

1.1 建立tcpserver

我们在main文件中编写如下代码,并在终端运行

/Users/qinjianquan/s1/tcpserver/src/main.rs

use std::net::TcpListener;

fn main() {
    let listener = TcpListener::bind("127.0.0.1:3000").unwrap();
    println!(Running on port 3000...);


    for stream in listener.incoming(){
        let _stream = stream.unwrap();

        println!("connection established")
    }
}
cargo run -p tcpserver
Running on port 3000...

1.2 建立tcpclient

在下列文件中输入

/Users/qinjianquan/s1/tcpclient/src/main.rs

use std::net::TcpStream;
fn main() {
    
    let _stream = TcpStream::connect("localhost:3000").unwrap();
}

在另一个终端中运行,然后查看第一个终端,会发现连接已经建立

cargo run -p tcpclient
connection established

1.3 发送和接收数据

use std::{net::TcpListener, io::{Read, Write}};

fn main() {
    let listener = TcpListener::bind("127.0.0.1:3000").unwrap();
    println!("Running on port 3000...");


    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();
    }
}
use std::io::{Read,Write};
use std::net::TcpStream;
use std::str;
fn main() {

    //connect and send "Hello"
    let mut stream = TcpStream::connect("localhost:3000").unwrap();
    stream.write("Hello".as_bytes()).unwrap();

    let mut buffer= [0; 5];
    stream.read(&mut buffer).unwrap();

    println!(
        "Response from server:{:?}",
        str::from_utf8(&buffer).unwrap()
    );
}

编写好代码以后,在两个终端中分别运行,具体结果如下

cargo run -p tcpserver

Running on port 3000...
connection established
cargo run -p tcpclient

Response from server:"hello"
举报

相关推荐

0 条评论