当我写TcpClient的NetworkStream时,数据被发送

本文关键字:数据 NetworkStream TcpClient | 更新日期: 2023-09-27 18:13:09

有类似

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

哪里Serialize可以调用Write字节逐字节我有点害怕-当stream将发送数据到服务器?它会锁定发送每个字节吗?我是否需要调用flush来确保所有数据都发送了?写MemoryStream比写整个字节数组到stream更有效吗?

当我写TcpClient的NetworkStream时,数据被发送

您将需要查看NoDelay属性。只要该值为false(默认值),TcpClient就不会在每次Write调用时发送数据包。它会进行缓冲,只有在时机成熟时才发送完整的数据包。对SendBufferSize进行一些调整也可能有所帮助。

NetworkStream.Flush在文档中不做任何事情。

至于锁——不要担心,直到你的分析器告诉你这是一个问题。: -)