如何接受客户端套接字然后在mio中轮询TcpStream?

时间:2017-01-30 17:14:05

标签: sockets rust mio

我无法弄清楚如何接受客户端套接字,然后使用mio 0.6开始轮询返回的TcpStream上的事件。

我尝试了这段代码,但Token(1)的事件永远不会到来。虽然打印出accept部分,但客户端会立即断开连接。

loop {
    poll.poll(&mut events, None).unwrap();

    for event in events.iter() {
        match event.token() {
            Token(0) => {
                match server.accept() {
                    Ok((stream, addr)) => {
                        println!("{}: accept {}", stream.as_raw_fd(), addr);

                        stream.register(&poll, Token(1), Ready::readable(), PollOpt::edge() | PollOpt::oneshot()).unwrap();
                    }
                    Err(e) => {
                        println!("listener.accept() errored: {}", e);
                        return;
                    }
                }
            },
            Token(1) => {
                println!("event from 1")
            }
            _ => {
                unreachable!()
            }
        }
    }
}

我不知道如何正确地做到这一点。

0 个答案:

没有答案