Следующий код почти такой же, как в документации Rust для TcpListener. Когда код запущен на Ubuntu 14.04, он не производит никаких ошибок, но в то же время он не работает! (netstat -an | grep ':80'
или telnet оба не подключаются к этому серверу).Rust TcpListener не удалось, но ошибок не было.
Если я сменил порт, он будет работать. Если я добавлю unwrap()
после listen()
, тогда код покажет «отказ в доступе». Я прочитал, что 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
Я понял, что это не проблема для меня. Проблема в том, что программа не вводила никаких ошибок. –
@FedorovMikhail заменить '/ * соединение не удалось * /' by 'println! (" {} ", E);' и вы увидите ошибки. – Levans