我正在制作一个使用控制台中的“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
无法放入缓冲区。
所以我假设你这样做是为了从套接字读取 对于 TCPClient 或套接字,您可以
int bufferSize = new TcpClient().ReceiveBufferSize;
or
int bufferSize = new TcpClient().Client.ReceiveBufferSize;