微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Rust 中的 TCPStream 中提取获取消息?

如何解决如何从 Rust 中的 TCPStream 中提取获取消息?

我正在尝试从 Rust 中的 Tcpstream 中提取一条 get 消息,发送到由程序设置的本地服务器。给我最大的问题是这里的错误

预期为 &[u8],找到枚举 std::result::Result

这是它源自的代码

fn handle_client(mut stream: Tcpstream) {
    println!("New Client IP: {}",stream.local_addr().unwrap());
    thread::spawn(|| {
                //should probably call the fn to validate the request somewhere up here
                let mut s = String::new();
                let mut h = String::new();
                let mut buffer = [0; 500];
                let r = str::from_utf8(stream.read_to_string(&mut buffer));
                s.push_str(r);

有什么建议吗?

解决方法

一些错误:

  • read_to_string 需要 String 作为缓冲区,而不是数组。
  • 它还返回一个 result 和读取的字节数(如 Result<usize>),而不是字符串本身。
let mut buffer = String::new();
stream.read_to_string(&mut buffer).expect("Unable to read from buffer");
s.push_str(&buffer);

如果您想准确读取缓冲区大小字节,您需要使用 read_exact

let mut buffer = [0; 500];
stream.read_exact(&mut buffer).expect("Unable to read from buffer");
s.push_str(str::from_utf8(&buffer).expect("Invalid utf8 data"));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。