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

WriteLineAsync or ReadAsync unable to read string for TCP Communicator C#

我正在创建一个 TCP Server/Client 以使用多线程相互通信,但我无法让服务器正确读取我的客户端发送的字符串。例如,我将字符串“testing”从客户端发送到服务器。在服务器控制台上,它显示为“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);