【发布时间】:2020-05-03 14:09:09
【问题描述】:
我有一个 rust 中的 TCP 客户端,它应该与 Java 服务器通信。我掌握了基础知识,可以在它们之间发送字节数组。
但是对于字节数组缓冲区,我需要知道字节数组的长度。但我不知道我应该得到它。目前,我现在只有一个固定大小的缓冲区。
我的 Rust 代码如下所示:
loop {
let mut buffer = vec![0; 12]; //fixed buffer length
let n = stream.read(&mut buffer).await;
let text = from_utf8(&buffer).unwrap();
println!("{}", text);
}
在 Java 中,您可以使用 DataInputStream 直接将缓冲区的大小作为整数发送。是否有任何选项可以在 rust 中执行此操作?
例如,这就是我在 Java 中的做法:
public String readMsg(Socket socket) throws IOException {
DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream()));
byte[] bytes = new byte[in.readInt()]; //dynamic buffer length
in.readFully(bytes);
return new String(bytes, StandardCharsets.US_ASCII);
}
【问题讨论】: