如何解决如何从 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 举报,一经查实,本站将立刻删除。