簡體   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