我有以下代码:

_clientRequestStream = _tcpClient.GetStream();

var memoryStream = new MemoryStream();
_clientRequestStream.CopyTo(memoryStream);
CopyTo 需要很长时间才能将 Stream 复制到另一个 Stream 中。似乎应用程序无缘无故地停在那里,或者至少我找不到原因。

最佳答案

网络流保持打开状态,直到它被流的一端关闭。 CopyTo() 从流中复制所有数据,等待流结束。如果服务器没有发送数据,则流不会结束或关闭,并且 CopyTo() 尽职尽责地等待更多数据或流结束。流另一端的服务器必须关闭流才能结束并返回 CopyTo()。

谷歌“TcpClient 教程”或“TcpCLient 示例”以获得一些展示您可能使用它们的其他方式的好页面,例如检查 NetworkStream.DataAvailable 以查看是否有数据等待或流是否仍然打开而没有数据。要仅读取一些数据而不等待流关闭,您可以使用 NetworkStream.Read() 或将其包装在 StreamReader 中并使用 ReadLine()。这完全取决于您要连接的服务器以及您要完成的任务。

关于c# - 将 NetworkStream 复制到 MemoryStream 需要 ∞ 天,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11749467/

10-10 11:32