Rust TcpListener不响应外部请求

时间:2017-02-24 10:02:56

标签: tcp rust

我的主要功能是:

fn main() {
let listener = TcpListener::bind("192.168.1.187:9527").unwrap();
println!("Listening for connections on port {}", 9527);
for stream in listener.incoming() {
    match stream {
        Ok(stream) => {
            thread::spawn(move || {
                let req_stream = &stream.try_clone().unwrap();
                let req = request::new(req_stream);
                let res = response::new(stream.try_clone().unwrap());
                handle_client(req, res)
            });
        }
        Err(e) => println!("Unable to connect: {}", e),
    }
}
}

我可以通过127.0.0.1:9527获得回复,但我无法从192.168.1.187:9527获得响应,这是我办公室的公共IP,甚至在部署服务器的计算机上执行此操作。

rust TcpListener仅适用于localhost吗?如何让它接受外部请求?

1 个答案:

答案 0 :(得分:3)

ss -lnp表示服务器仅绑定到回送地址 - 127.0.0.1。因此,客户端在192.168.1.187:9527尝试连接时接收RST。

尝试:

TcpListener::bind("0.0.0.0:9527").unwrap();

这将绑定到系统中可用的所有接口。

不确定为什么" 192.168.1.187"没有工作。但是让我们试试" 0.0.0.0"并查看ss输出。