【发布时间】:2017-10-22 00:47:24
【问题描述】:
我正在尝试编写一个 TCP 客户端来打印传入的消息。我想出了以下代码:
extern crate bytes;
extern crate futures;
extern crate tokio_core;
extern crate tokio_io;
use futures::Future;
use tokio_core::net::TcpStream;
use tokio_core::reactor::Core;
use tokio_io::AsyncRead;
use bytes::BytesMut;
fn main() {
let mut core = Core::new().unwrap();
let handle = core.handle();
let connection = TcpStream::connect(&"127.0.0.1:8081".parse().unwrap(), &handle);
let server = connection.and_then(move |mut stream| {
let mut buf = BytesMut::with_capacity(1000);
stream
.read_buf(&mut buf)
.map(|buf| print!("Buffer {:?}", buf))
.map_err(|e| eprintln!("Error: {}", e));
Ok(())
});
core.run(server).unwrap();
}
它编译但失败并出现Buffer NotReady 错误。
【问题讨论】:
-
如果你想运行服务器,为什么要使用
TcpStream::connect? -
@Shepmaster 现在我正在尝试阅读任何内容。这种方式更方便——我只是使用
ncat运行监听器。我认为服务器和客户端的读取套接字应该是相似的。
标签: rust rust-tokio