打印流信息



im 尝试打印发送到端口 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:执行后应用程序也会崩溃

在你的

代码中:

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是面向连接的。

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

var s = new StreamReader(new NetworkStream(S));
s.Readline();
s.ReadToEnd(); //OR

相关内容

  • 没有找到相关文章

最新更新