WriteLineAsync或ReadAsync无法读取TCP Communicator C#的字符串



我正在创建一个TCP服务器/客户端,以便使用多线程相互通信,并且我在让服务器正确读取客户端发送的字符串时遇到了问题。例如,我发送字符串";测试";从客户端到服务器。在服务器控制台上;Received System.Net.Sockets.NetworkStream";。我已经坚持了几个小时了,我不知道如何应对这种情况。如有任何帮助,我们将不胜感激。

TLDR:服务器和客户端可以相互通信,但服务器无法正确读取客户端发送的字符串。

服务器代码:

async Task EchoAsync(TcpClient client, CancellationToken ct)
{
var buf = new byte[4096];
var stream = client.GetStream();
while (!ct.IsCancellationRequested)
{
var amountRead = await stream.ReadAsync(buf, 0, buf.Length, ct);
WriteToConsole("Received " + stream.ToString(), 0);
if (amountRead == 0)
{
break; // End of stream
}
await stream.WriteAsync(buf, 0, amountRead, ct);
}
}

客户代码:

private async void ClientToServerMsg_btn_Click(object sender, RoutedEventArgs e)
{
using (var NetworkStream = clientSocket.GetStream())
using (var writer = new StreamWriter(NetworkStream))
{
//writer.AutoFlush = true;
WriteToConsole("Writing to server...", 1);
await writer.WriteLineAsync(ClientToServerMsg.Text);
}
}

尝试

WriteToConsole("Received " + System.Text.Encoding.ASCII.GetString(buf), 0);

取而代之的是

WriteToConsole("Received " + stream.ToString(), 0);

最新更新