给定大消息时,StreamWriter会自动刷新缓冲区

时间:2011-04-14 23:31:25

标签: c# networking flush streamwriter

概述

我有一个Client-Server,我在服务器上发送streamWriter.WriteLine(messageToClient);发送大邮件。客户端上的streamReader.ReadLine();正在读取2000长度的消息。

这里的问题是streamWriter.Flush()对较大的消息没有影响,因为我的目标是服务器能够在缓冲区之间直接切换(具有流畅的服务器消息输出)而不是(服务器响应将混杂在一起,直到达到缓冲区限制以进行刷新)。

问题:我认为缓冲区是自动刷新的,因为它们已满?那么streamWriters的最大缓冲区大小是多少?

我已经使用更小的messageToClient进行了测试,并且流的未刷新按预期工作。 Aka服务器流一次向客户端输出一组小消息,大概是因为缓冲区已满。

1 个答案:

答案 0 :(得分:5)

您是否尝试过使用the constructor that takes the buffer size as an argument

public StreamWriter(
    Stream stream,
    Encoding encoding,
    int bufferSize
)

编辑:在反射器中查看,看起来默认缓冲区大小为1024字节。