代码之家  ›  专栏  ›  技术社区  ›  Doggo123445

TcpListener未接收到任何数据

  •  0
  • Doggo123445  · 技术社区  · 7 年前

    我有一个问题,我没有从连接的TcpClient接收到任何字节!

    服务器:(我试图将收到的消息添加到一个列表框中,但什么也没有显示出来。

       //tl is a TcpListener
       //I set this up in a 500 milisecond loop. No worries about that.
       if (tl.Pending())
       {
         TcpClient tcp = tl.AcceptTcpClient();
         var s = tcp.GetStream();
         int bytesRead = s.Read(new byte[tcp.ReceiveBufferSize], 0, 
         tcp.ReceiveBufferSize);
         string dataReceived = Encoding.ASCII.GetString(new 
         byte[tcp.ReceiveBufferSize], 0, bytesRead);
         listBox1.Items.Add(dataReceived);
         tcp.Close();
         oac++; //Overall connection count
         label3.Text = "Overall Connections: " + oac; //logging connections
       }
    

    客户:

     void Send(){
        TcpClient c = new TcpClient(Im not including my ip., 4444);
        System.IO.StreamWriter w = new System.IO.StreamWriter(c.GetStream());
        byte[] bytesToSend = ASCIIEncoding.ASCII.GetBytes($"Username: \"
        {textBox1.Text}\" | Password: \"{textBox2.Text}\"");
        NetworkStream nwStream = c.GetStream();
        nwStream.Write(bytesToSend, 0, bytesToSend.Length);
        nwStream.Flush();
      }
    

    I连接正常,但在接收数据时存在一些问题。它只是一片空白

    1 回复  |  直到 7 年前
        1
  •  0
  •   Frank Nielsen    7 年前

    new byte[tcp.ReceiveBufferSize] . 你也可以这样做:

    using( var inputStream = new MemoryStream() )
    {
      tcp.GetStream().CopyTo(inputStream);
      Encoding.ASCII.GetString(inputStream.ToArray());
      listBox1.Items.Add(dataReceived);
      ...
    }
    

    回想起 using 在所有IDisposable上,否则您将耗尽资源。