有没有办法以某种方式跳过/转储来自传入的NetworkStream的X字节数据?你不能Seek
它或Position
它,所以它似乎唯一的方法是将它复制到其他流或只是阅读它然后转储它。
目前我使用ReadAsync()
方法来读取流。
答案 0 :(得分:2)
不,您必须阅读NetworkStream
中的所有数据。如果您需要跳过数据,您可以阅读并忽略它,但您必须在它向前移动之前阅读它。这是因为NetworkStream
正在抽象TCP套接字数据流 - 并且TCP中没有任何内容表示跳过字节 - 这只是一个二进制数据的消息。 TCP之上的协议(如FTP或HTTP)可以实现允许您在文件或对象中定位的概念,但NetworkStream
并不知道所有这些 - 它只是让您获取套接字数据它来了。
如果您需要Stream来抽象搜索函数,以便将其传递给需要可搜索流的某些代码,那么您可以构建自己的Stream
类来封装NetworkStream
来实现{ {1}}和/或Seek
。当然,在表格下方,您必须阅读并忽略您使用Position
或Seek
绕过的部分;除非你缓冲它,否则你将无法向后实施Position
或Seek
。