繁体   English   中英

为什么不读取 NetworkStream 中的数据? .net TcpClient

[英]Why data from NetworkStream do not read? .net TcpClient

我有客户端层和服务器层。 客户端发送转换为字节数组 integer 变量。 我正在使用 TcpClient 和 TcpListener,并使用 NetworkStream 来写入和读取数据。 出于某种原因,服务器不从 NetworkStream 读取数据,尽管我使用了这个问题的建议: 如何从 NetworkStream 获取所有数据

客户层:

   TcpClient sender1 = new TcpClient();
                        sender1.Connect(ip, port);

                        using (NetworkStream stream1 = client.GetStream())
                        {
                            int isCorrect = 1;
                            byte[] data = BitConverter.GetBytes(isCorrect);
                            stream1.Write(data, 0, data.Length);
                        }
                        sender1.Close();

服务器层

  TcpListener server = new TcpListener(IPAddress.Parse(ip), serverPort);
  server.Start();

        while (true)
        {
            TcpClient enterWaiter = server.AcceptTcpClient();
            using (NetworkStream stream1 = enterWaiter.GetStream())
            {
                byte[] buffer = new byte[4];
                using (MemoryStream ms = new MemoryStream())
                {
                    int read;
                    while ((read = stream1.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                    Console.WriteLine($"{ms.ToArray()}");
                }
            }
            server.Stop();
            break;
        }

这是因为您在接收数据之前关闭服务器,移动或删除 Server.Stop 和断行,例如:

 TcpListener server = new TcpListener(IPAddress.Parse(ip), serverPort);
  server.Start();

        while (true)
        {
            TcpClient enterWaiter = server.AcceptTcpClient();
            using (NetworkStream stream1 = enterWaiter.GetStream())
            {
                byte[] buffer = new byte[4];
                using (MemoryStream ms = new MemoryStream())
                {
                    int read;
                    while ((read = stream1.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                    Console.WriteLine($"{ms.ToArray()}");
                }
            }
            //server.Stop(); <-- (Re)move
            //break; <-- (Re)move
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM