以下代码与TcpListener的Rust文档中的几乎相同。 当代码在Ubuntu 14.04上运行时,它不会产生错误,但同时它不起作用! (netstat -an | grep ':80'
或telnet都不连接到此服务器)。Rust TcpListener失败,但未显示错误
如果我更改端口,它将工作。如果我将在listen()
之后添加unwrap()
,则代码将显示“拒绝访问错误”。我读listen()
返回IOResult<T>
,如果它不使用,则不会发生错误。但我想我使用它调用acceptor.incoming()
,我期望在这次调用时出现错误。为什么没有发生?
锈病版本:rustc 0.13.0-夜间(bd7138dd6 2014年10月27日23时02分55秒0000)
的Ubuntu 14.04
fn main() {
let listener = TcpListener::bind("127.0.0.1", 80);
// bind the listener to the specified address
let mut acceptor = listener.listen(); //unwrap() here
fn handle_client(mut stream: TcpStream) {
println!("a");
}
// accept connections and process them, spawning a new tasks for each one
for stream in acceptor.incoming() {
match stream {
Err(e) => { /* connection failed */ }
Ok(stream) =>
spawn(proc() {
// connection succeeded
handle_client(stream)
})
}
}
// close the socket server
drop(acceptor);
}
您必须是root用户才能打开特权端口(<1024) – Arjan 2014-11-01 09:03:57
我知道这对我来说不是问题。问题是程序没有输入任何错误。 – 2014-11-01 09:08:20
@FedorovMikhail用'println!(“{}”,e)替换'/ *连接失败* /';'你会看到错误。 – Levans 2014-11-01 09:12:04