我打开TcpClient
然后调用tcpClient.GetStream().Read(message, 0, 8)
以便从连接中读取消息。
由于某种原因,即使连接的另一端没有发送任何数据,我仍然会收到垃圾数据。 Read()
永远不会阻止,DataAvailable
总是true
,而且我会收集大量垃圾作为数据。
可能是什么原因?
提前感谢您的帮助!
答案 0 :(得分:1)
如果没有看到管道的两端(但特别是发送结束),这很难回答。 DataAvailable
只能真正指示本地缓冲区的状态(不是流本身);在确定流的结束方面,它基本上是无用的(报告不相关的东西)。
我期待这是传输代码中的错误。这里的经典错误如下:
var buffer = memoryStream.GetBuffer();
networkStream.Write(buffer, 0, buffer.Length);
应该是:
var buffer = memoryStream.GetBuffer();
networkStream.Write(buffer, 0,
(int)memoryStream.Length);
第一个(和不正确的)版本发送内存流的后备缓冲区的垃圾部分。