有类似的代码
var stream = _tcpClient.GetStream();
Serializer.Serialize(stream, message);
在哪里Serialize
可以Write
逐字节调用我有点害怕 - 什么时候stream
将数据发送到服务器?它会锁定发送每个字节吗?我应该打电话flush
以确保发送所有数据吗?写入MemoryStream
并比写入整个字节数组更有效stream
吗?
你会想看看该NoDelay
物业。只要这是错误的(这是默认设置),TcpClient 就不会在每次调用 Write 时发送数据包。它会缓冲起来,只在觉得时机成熟时才发送一个完整的数据包。对 SendBufferSize 进行一些调整也可能会有所帮助。
NetworkStream.Flush
被记录为什么都不做。
至于锁定 - 在您的分析器告诉您这是一个问题之前,请不要担心。:-)