我正在尝试在Rust中实现Haskell IRC bot教程,并且在连接后读取服务器发送给我的内容时遇到了一些困难.似乎发生的事情是我连接,从服务器读取~5 KB,然后大约240秒后,所有内容立即被转储,而不是逐行读取.连接由ping超时关闭,最终应该发生,因为我还没有ping-pong函数来回复.
这是我到目前为止所拥有的:
use std::io::{Read, Write};
use std::net::TcpStream;
fn main() {
let mut stream = TcpStream::connect("irc.freenode.org:6667").unwrap();
let _ = stream.write(b"NICK G-SERUFU\r\n");
let _ = stream.write(b"USER G-SERUFU 0 * :brobot\r\n");
let _ = stream.write(b"JOIN #tutbot-testing\r\n");
let mut line = String::with_capacity(512);
loop {
let result = stream.read_to_string(&mut line);
match result {
Ok(n) => println!("Received {} bytes", n),
_ => {}
}
line.clear();
}
}
Run Code Online (Sandbox Code Playgroud)
当我修改循环a以使用数组而不是字符串时,我立即得到我期望的输出:
let mut line;
loop {
line = [0; 512];
let result = stream.read(&mut …
Run Code Online (Sandbox Code Playgroud)