从传入的 NetworkStream 中转储数据?

Dumping data from incoming NetworkStream?

有没有办法从传入的 NetworkStream 中以某种方式 skip/dump X 字节的数据?你不能 Seek 它或 Position 它,所以似乎唯一的方法是将它复制到其他流或只是读取它然后转储它。

目前我正在使用ReadAsync()方法读取流。

不,您必须阅读 NetworkStream 中的所有数据。如果你需要跳过数据,你可以读取并忽略它,但你必须在它继续前进之前读取它。这是因为 NetworkStream 正在抽象一个 TCP 套接字数据流——并且 TCP 中没有任何内容表示要跳过字节——它只是向你袭来的二进制数据流。 TCP 之上的协议,例如 FTP 或 HTTP,可能会实现允许您在文件或对象中定位的概念,但 NetworkStream 并不知道所有这些——它只是让您获取套接字数据。

如果您需要 Stream 来抽象查找函数,以便将其传递给需要可查找流的代码,您可以构建自己的 Stream class 来包装 NetworkStream 实现了 Seek 和/或 Position。当然,在 table 下,必须阅读并忽略您使用 SeekPosition 绕过的部分;除非你缓冲它,否则你将无法向后实现 SeekPosition