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.
在.NET 4中,复制部分非常简单:
MemoryStream ms = new MemoryStream();
client.GetStream().CopyTo(ms);
Run Code Online (Sandbox Code Playgroud)
如果您不使用.NET 4,那么类似于您已经获得的代码基本上是相同的.
但请注意,此(以及任何其他尝试)仅在网络流已关闭时才起作用 - 否则Read呼叫将阻止等待更多数据.我怀疑你的问题是什么 - 这是一个根本问题.
如果你的网络流没有关闭,那么你还不清楚你真的希望它如何表现 - 如果"拆分"流的两个读者基本上读取任何缓冲数据,但是然后阻塞直到有新数据?当然,当从两个流中读取缓冲数据时,可以删除缓冲数据.如果这就是你所追求的,我认为.NET中没有任何东西可以帮助你 - 而且它可能非常棘手.
如果你能给我们更多关于你想要做的事情(以及TcpClient连接到什么)的背景,那将真正有所帮助.
| 归档时间: |
|
| 查看次数: |
1911 次 |
| 最近记录: |