如何在Rust中通过TCPStream发送多个消息?

时间:2019-09-14 07:38:59

标签: rust rust-tokio

我有一个字符串消息列表,我想通过打开它们之间的TCP连接来发送到另一台机器。我不想使用现有的解决方案,例如mpsc :: channel。

我看到了一些示例,这些示例说明了如何使用间隔和民意调查来在Tokio中完成相同的操作。但是,假设我们要尽快发送消息,我们该怎么做?我还尝试使用tokio :: spawn并循环遍历整个队列以写入所需的消息,但始终最终会从套接字获取错误(无法移动...。)

let done = listener
    .incoming()
    .for_each(move |socket| {
        let server_queue = _cqueue.clone();
        let (reader, mut writer) = socket.split();
        let sender = Interval::new_interval(std::time::Duration::from_millis(1))
            .for_each(move |_| {
                writer
                    .poll_write(server_queue.pull().borrow())
                    .map_err(|_| {
                        tokio::timer::Error::shutdown();
                    })
                    .unwrap();
                return Ok(());
            })
            .map_err(|e| println!("{}", e));
        ;
        tokio::spawn(sender);
        return Ok(());
    })
    .map_err(|e| println!("Future_error {}", e));

tokio::run(done);

使用此方法,我可以在用户端获取消息,但是我感觉间隔使我们放慢了速度,因为我们在发送其他消息之前等待。还有另一种不用间隔就可以达到类似目的的方法吗?

0 个答案:

没有答案