当我从网络流中读取消息时,我使用的函数包含这样的循环
While Mynetworkstream.DataAvailable
'Read the data from the stream
End While
发送方只能将一个可能为4k的缓冲区长度写入流中,然后由接收方在此循环中读取。现在,当发送者不是非常快并且将块写入流中的速度比接收者读取它们时发生的情况要慢,不应该。在某些时候,数据可能会导致错误,即使发送者不是。发完所有它的东西? 如果是这样,应该如何避免?我只找到这样的代码,它似乎工作,但我从来不明白为什么这是可靠的。
我在VB.NET中使用TCPClient / Server,但C#中的答案也很好,无论如何都是相同的概念。