我正在使用Tarpc。
客户端
let (_, mut auth_reactor) = auth::spawn_server(auth_server_address);
let auth_client: auth::FutureClient = auth_reactor
.run(auth::FutureClient::connect(
auth_server_address,
client::Options::default(),
))
.unwrap();
auth_reactor
.run(
auth_client
.authme(byte_vector_auth.clone())
.map_err(|e| println!("{}", e))
.and_then(|i| {
println!("{:?}", i);
Ok(())
}),
)
.unwrap();
服务器
pub fn spawn_server(address: SocketAddr) -> (server::Handle, reactor::Core) {
let reactor = reactor::Core::new().unwrap();
client::Options::default().handle(reactor.handle());
let (auth_handler, server) = AuthServer
.listen(address, &reactor.handle(), server::Options::default())
.unwrap();
reactor.handle().spawn(server);
return (auth_handler, reactor);
}
我正在返回反应堆,因为我需要它给客户。
答案 0 :(得分:1)
使用tokio,您需要一个反应器来运行您的异步客户端。 我不认为您需要使用与服务器相同的反应器,但每个线程只能有一个反应器。
因此,您可以生成客户端线程,甚至为您的客户端构建不同的二进制文件。
您必须以另一种方式获取服务器地址,但这不应该太难;)