【发布时间】:2013-01-04 13:05:12
【问题描述】:
我想在 Windows.Storage.Streams.DataReader 类上实现一个名为 ReadToEnd 的扩展方法。这应该基本上读取流上的所有可用数据,如 System.IO.StreamReader。
尽量让我的不兼容 WinRT 代码的移植变得尽可能简单。
我不确定如何实现这一点,或者是否可能。
【问题讨论】:
-
System.IO.Stream没有ReadToEnd()方法。你是在说System.IO.TextReader.ReadToEnd()吗?另外为什么你的问题标题中有StreamSocket?这与您的问题有什么关系? -
嗨达林。你是对的。相应地修改了问题。关于 StreamSocket,我引用了它,因为您通常将 DataReader 与它结合使用。希望经常使用 StreamSocket 的开发人员能够找到解决方案,因为他们可能做过类似的事情。
-
当您处理具有
ReadToEnd操作的网络流时没有任何意义。如果没有更多可用数据并且您的代码将挂起,则从套接字读取将被阻塞。通常,当您处理套接字时,您正在使用一些基于 TCP 的协议,例如 HTTP。每个协议都应该有一种方法来指定有多少数据可供读取,否则客户端将不知道要读取多少,并且如果他尝试读取更多数据就会挂起。例如,在 HTTP 协议中,服务器通过Content-Length响应标头指示这一点。 -
@DarinDimitrov 在 HTTP/1.0 中,不提供
Content-Length是很常见的,客户端依赖服务器关闭连接来指示所有数据已传输。
标签: c# .net windows-8 windows-runtime .net-4.5