0

有类似的代码

            var stream = _tcpClient.GetStream();
            Serializer.Serialize(stream, message);

在哪里Serialize可以Write逐字节调用我有点害怕 - 什么时候stream将数据发送到服务器?它会锁定发送每个字节吗?我应该打电话flush以确保发送所有数据吗?写入MemoryStream并比写入整个字节数组更有效stream吗?

4

1 回答 1

2

你会想看看该NoDelay物业。只要这是错误的(这是默认设置),TcpClient 就不会在每次调用 Write 时发送数据包。它会缓冲起来,只在觉得时机成熟时才发送一个完整的数据包。对 SendBufferSize 进行一些调整也可能会有所帮助。

NetworkStream.Flush被记录为什么都不做。

至于锁定 - 在您的分析器告诉您这是一个问题之前,请不要担心。:-)

于 2013-05-11T02:05:22.443 回答