我的主要功能是:
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吗?如何让它接受外部请求?
答案 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
输出。