gpt4 book ai didi

c# - 将 NetworkStream 复制到 MemoryStream 需要无限 ∞ 天

转载 作者:行者123 更新时间:2023-11-30 13:10:32 25 4
gpt4 key购买 nike

我有以下代码:

_clientRequestStream = _tcpClient.GetStream();

var memoryStream = new MemoryStream();
_clientRequestStream.CopyTo(memoryStream);

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

最佳答案

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com