当我写TcpClient的NetworkStream时,数据被发送
本文关键字:数据 NetworkStream TcpClient | 更新日期: 2023-09-27 18:13:09
有类似
的代码 var stream = _tcpClient.GetStream();
Serializer.Serialize(stream, message);
哪里Serialize
可以调用Write
字节逐字节我有点害怕-当stream
将发送数据到服务器?它会锁定发送每个字节吗?我是否需要调用flush
来确保所有数据都发送了?写MemoryStream
比写整个字节数组到stream
更有效吗?
您将需要查看NoDelay
属性。只要该值为false(默认值),TcpClient就不会在每次Write调用时发送数据包。它会进行缓冲,只有在时机成熟时才发送完整的数据包。对SendBufferSize进行一些调整也可能有所帮助。
NetworkStream.Flush
在文档中不做任何事情。
至于锁——不要担心,直到你的分析器告诉你这是一个问题。: -)