You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何测试Rust HTTP服务器中的TCP stream.read()函数?

测试Rust简易HTTP服务器的stream.read()及连接等待状态

你已经完成了基础的TCP服务器搭建,编译运行正常,接下来可以通过以下方式验证连接等待状态和测试stream.read()函数:

一、验证服务器是否在等待新连接

  1. 直接观察终端输出
    运行服务器后,终端打印出Listening on {地址} !!!!凸(⊙▂⊙✖ )!!!!后,程序会卡在listener.accept()调用处,此时就是在等待新的TCP连接,不会继续输出其他内容,这就说明服务器处于等待状态。

  2. 用端口监听状态确认
    在另一个终端执行对应系统的命令,查看目标端口的监听状态:

  • Linux/macOS:netstat -an | grep <你的端口号> 或 ss -tulwn | grep <你的端口号>,如果输出中包含LISTEN,则说明端口正在被监听,服务器在等待连接。
  • Windows:打开命令提示符,运行netstat -ano | findstr <你的端口号>,如果结果里状态为LISTENING,即可确认。

二、测试stream.read()函数

stream.read()是阻塞式调用,会等待直到从连接中读取到数据,以下两种方法可以快速测试:

方法1:用curl发送HTTP请求

假设你的服务器监听地址是127.0.0.1:8080,在另一个终端执行:

curl http://127.0.0.1:8080

此时服务器会读取到curl发送的HTTP请求,终端会打印出类似Recieved a request: GET / HTTP/1.1...的内容。

方法2:用telnet手动构造请求

  1. 在终端运行telnet 127.0.0.1 8080,成功连接后会进入交互模式。
  2. 手动输入HTTP请求内容:
GET /test HTTP/1.1
Host: 127.0.0.1:8080

注意最后需要输入一个空行(按两次回车),此时服务器会读取到你输入的请求并打印出来。

你的Server模块代码(已修正小问题)

use ::std::io::Read;
use std::net::TcpListener;

pub struct Server_Node {
    address: String,
}
impl Server_Node {
    pub fn new(address: String) -> Self {
        Server_Node { address }
    }

    pub fn run(self) {
        println!("Listening on {} !!!!凸(⊙▂⊙✖ )!!!!", self.address);
        let listener = TcpListener::bind(&self.address).unwrap();

        loop {
            match listener.accept() {
                Ok((mut _stream, _)) => {
                    let mut buffer = [0; 1024];
                    match _stream.read(&mut buffer) {
                        Ok(_) => {
                            println!("Recieved  a request: {}", String::from_utf8_lossy(&buffer));
                        }

                        Err(e) => println!("FAILED TO READ FROM CONNECTION: {}", e),
                    }
                }
                Err(e) => println!("ERROR: FAILED TO ESTABLISH CONNECTION :{} ", e),
            }
        }
    }
}

(注:修正了代码里Err((e))多余的括号,以及拼写错误FVROM)

内容的提问来源于stack exchange,提问作者GoodbyeFrog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 07:33:31