从NetworkStream读取数据时,有没有办法一次性读取所有数据?

问题描述 投票:0回答:1

我正在制作一个使用控制台中的“NetworkStream”发送数据的程序。

MSDN TcpListener 类示例在从“NetworkStream”读取数据时使用“while”。

我不想使用

while
,而是想一次性读取
NetworkStream
中收到的所有数据。

有没有一种方法可以动态调整缓冲区大小并读取数据而不使用

while

...

byte[] bytes = new byte[256];
string data = null;

...

int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
  data = Encoding.UTF8.GetString(bytes, 0, i);
  Console.WriteLine("Received: {0}, data);
}

我尝试使用

List<byte>
,但失败了,因为
stream.Read
无法放入缓冲区。

c# arrays sockets dynamic networkstream
1个回答
0
投票

所以我假设你这样做是为了从套接字读取 对于 TCPClient 或套接字,您可以

int bufferSize = new TcpClient().ReceiveBufferSize;
or
int bufferSize = new TcpClient().Client.ReceiveBufferSize;
© www.soinside.com 2019 - 2024. All rights reserved.