Sockets Rust数据报套接字:如何从字节接收字符串

Sockets Rust数据报套接字:如何从字节接收字符串,sockets,rust,datagram,Sockets,Rust,Datagram,我正在用Rust中的unix数据报套接字创建简单的客户机-服务器通信。我从客户端接收到的消息长度为字节,但无法转换回从客户端发送的原始字符串。我尝试过,但没有成功。这是代码 如何在服务器上获取原始字符串 服务器端: 我在服务器端得到的结果: Waiting for client to connect... Received 27 Received 27 Received 27 Received 27 Received 27 Received 27 Received 27 std::str::

我正在用Rust中的unix数据报套接字创建简单的客户机-服务器通信。我从客户端接收到的消息长度为字节,但无法转换回从客户端发送的原始字符串。我尝试过,但没有成功。这是代码

如何在服务器上获取原始字符串

服务器端: 我在服务器端得到的结果:

Waiting for client to connect...
Received 27
Received 27
Received 27
Received 27
Received 27
Received 27
Received 27

std::str::from_utf8(buf.as_slice()).unwrap()应该为您提供数据的&str,您可以根据需要将其转换为字符串:

socket.recv(buf.as_mut_slice()).expect("recv function failed");
let message = std::str::from_utf8(buf.as_slice()).expect("utf-8 convert failed");

第一行将数据读取到
buf
中,第二行将
buf
中的数据转换为str。

您能否再解释一下,当我遇到错误并且无法设置&[u8]的buf类型时,我需要在代码中做些什么更改。错误[E0308]:类型不匹配-->src/unix|u数据报|u服务器。rs:31:48|31|let接收|u字节:&str=socket.recv(from_utf8(buf.as|u slice()).unwrap()类型在易变性方面有所不同|=注意:预期的易变引用
&mut[u8]
找到的引用
&str
我更新了答案以包含
套接字。recv
调用感谢帮助:-)
Waiting for client to connect...
Received 27
Received 27
Received 27
Received 27
Received 27
Received 27
Received 27

socket.recv(buf.as_mut_slice()).expect("recv function failed");
let message = std::str::from_utf8(buf.as_slice()).expect("utf-8 convert failed");