C# 打印流信息

C# 打印流信息,c#,sockets,stream,tcplistener,C#,Sockets,Stream,Tcplistener,我试图打印发送到端口2000的信息,但我得到的只是“System.Net.Sockets.NetworkStream”。有没有办法将流转换成字符串?或者直接打印流信息的方法 static void Main(string[] args) { while (true) { TcpListener TL = new TcpListener(IPAddress.Any, 2000); TL.Star

我试图打印发送到端口2000的信息,但我得到的只是“System.Net.Sockets.NetworkStream”。有没有办法将流转换成字符串?或者直接打印流信息的方法

        static void Main(string[] args)
    {
        while (true)
        {
            TcpListener TL = new TcpListener(IPAddress.Any, 2000);
            TL.Start();
            Socket S = TL.AcceptSocket();
            Stream SS = new NetworkStream(S);
            string MSG = SS.ToString(); 
            Console.WriteLine(MSG);
        }
    }
编辑:这是客户机

       static void Main(string[] args)
    {

            try
            {
                TcpClient TC = new TcpClient();
                TC.Connect("XXX.XXX.XXX.XXX", 2000);
                NetworkStream Writer = TC.GetStream();
                string MSG = Console.ReadLine();
                byte[] pack = Encoding.ASCII.GetBytes(MSG);
                Writer.Write(pack, 0, pack.Length);
                Writer.Flush();
            }
            catch
            {
                Console.WriteLine(" faild");
                Console.ReadLine();
            }


    }

PS:执行后应用程序也会崩溃

如果另一部分正在发送字符串(不是无法转换为字符串的二进制数据),那么您可以尝试

var s = new StreamReader(new NetworkStream(S));
s.Readline();
s.ReadToEnd(); //OR
在代码中:

SS.ToString();
将始终返回
System.Net.Sockets.NetworkStream
!由于
ToString()
函数返回表示当前对象的字符串,因此可以使用
StreamReader
从流中读取行

Stream SS = new NetworkStream(S);
StreamReader reader = new StreamReader(SS);
string MSG = reader.ReadLine();
Console.WriteLine(MSG);

当然,您应该在客户端之前运行服务器程序,因为TCP是面向连接的。

使用try/catch块避免应用程序崩溃。@L.B.给了你一个asnwer,不要调用streams的对象来获取流数据,而是使用StreamReader。我已经更新了代码,但它仍然没有编写文本。它清楚地获取了它不会打印的信息。你怎么知道它清楚地获取了信息?您使用Readline或ReadtoEnd哪种代码?如果不发送
Environment.NewLine
ReadLine将永远不会返回。ReadToEnd仅在另一端关闭连接时返回。当我从客户端向读卡器发送信息时,应用程序崩溃。在连接关闭后,它会这样做(这是一个windows xp问题,我懒得去解决)。我还使用ReadtoEnd();信息发送后,连接立即关闭。附言:它崩溃后,文本应该显示。所以这并不是阻止它打印的原因