如何将流写入内存流?

pur*_*ang 3 .net c#

public void doprocess(TcpClient client)
{    
    MemoryStream ms = new MemoryStream();

    Stream clStream = client.GetStream();

    byte[] buffer_1 = new byte[8192];

    int count = clStream.Read(buffer_1, 0, buffer_1.Length);

    while (count > 0)
    {
        ms.Write(buffer_1, 0, count);

        //the below line doesn't gives response and code hangs here 
        count = clStream.Read(buffer_1, 0, buffer_1.Length);         
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以将一个流写入另一个流?我想用Stream两次,这就是为什么我需要把它写到MemoryStream.

Jon*_*eet 5

在.NET 4中,复制部分非常简单:

MemoryStream ms = new MemoryStream();
client.GetStream().CopyTo(ms);
Run Code Online (Sandbox Code Playgroud)

如果您不使用.NET 4,那么类似于您已经获得的代码基本上是相同的.

请注意,此(以及任何其他尝试)仅在网络流已关闭时才起作用 - 否则Read呼叫将阻止等待更多数据.我怀疑你的问题是什么 - 这是一个根本问题.

如果你的网络流没有关闭,那么你还不清楚你真的希望它如何表现 - 如果"拆分"流的两个读者基本上读取任何缓冲数据,但是然后阻塞直到有新数据?当然,当从两个流中读取缓冲数据时,可以删除缓冲数据.如果这就是你所追求的,我认为.NET中没有任何东西可以帮助你 - 而且它可能非常棘手.

如果你能给我们更多关于你想要做的事情(以及TcpClient连接到什么)的背景,那将真正有所帮助.