问题很简单:网络流的StreamWriter中的WriteLine()总是传递整行吗?或者有一些限制?例如它只提供一些尺寸的线。我的意思是,如果我调用WriteLine(一行上有一些非常长的字符串(例如10000000个字符)),StreamReader的ReadLine()是否会像我发送它一样接收它?或者它只会收到一些部分?在网络流的StreamWriter中做WriteLine()总是传递全行吗?
2
A
回答
1
它会写和读它所有,无论。
例如,只有今天早些时候我与BigIntegers
工作和使用WriteLine
用写码流数超过183000位(虽然,过了好一会儿!)。
1
WriteLine
可能会将您的字符串分成多个数据包,但只要您在另一端使用ReadLine
,则无需关心。
ReadLine
将始终读取整行,无论它是否包含多个数据包,只要连接不失败(并且存储器足够多等)。
更确切地说:您的StreamWriter
将始终将整个字符串传送到您的NetworkStream,根据多种因素(包括字符串,网络配置等等),它可能一次也可能不会一次全部发送。另一方面,类似的事情发生。 NetworkStream.Read将一次读取尽可能多的数据,并将其全部传递到StreamReader,但如果您使用的是StreamReader.ReadLine
,那么该方法在返回完整行之前不会返回任何内容。
2
上
StreamReader
在流总是读一个完整的线(或生产
OutOfMemoryException
)的另一端
是,ReadLine
,但是这是ReadLine
属性超过了网络流。在网络层面,并且对于NetworkStream
,其可能已被拆分为多个单独的发送和接收。
ReadLine
直到看到换行符序列才会返回。
(警告 - 如果你传递给WriteLine
字符串包含在内部,换行符序列,那么你将只接收直到第一换行序列串起来的部分)
相关问题
- 1. Solr做网络爬行吗?
- 2. 网络传递
- 3. 通过网络传输GetBitmapBits(),安全吗?
- 4. 安全超时网络流中的ReadLine
- 5. 在使用网络传递的GET方法中传递参数
- 6. 模型传递到网络API是空
- 7. 在JavaScript中传递空回调是不好的做法吗?
- 8. 总是运行网络android应用程序的最佳做法是什么?
- 9. 在mysql中,“解释...”总是安全吗?
- 10. 在PHP中总是使用===安全吗?
- 11. 网络安全 - url参数安全吗?
- 12. 网络流返回的字符串的长度总是8193
- 13. 在C++中使用引用传递总是更好吗?
- 14. 如何使用Cocoa实现安全的网络消息传递
- 15. 来自网络的Icecast流式传输
- 16. 网络流图全部可能路径
- 17. 使我的网络api安全吗?
- 18. Response.Redirect(Request.Url.AbsolutePath)总是“安全”吗?
- 19. arbitino可以做网络请求吗?
- 20. 传递一个FileStream作为参数传递给StreamWriter的
- 21. 传递参数使用ksoap2到.net网络服务,总是传递NULL(空)值
- 22. 从网络浏览器打开VLC网络流式传输
- 23. 是否在本地网络上使用TCP或UDP进行视频流传输?
- 24. 的dashbord'项目 - >网络 - >网络Topology`总是加载
- 25. 我可以依赖DataAvailable进行SSL封装的网络流吗?
- 26. 在C#中只写WriteLine代替Console.WriteLine是可能的吗?
- 27. 通过网络流式传输图像
- 28. ALSA PCM设备网络流式传输
- 29. 网络流量中的流通
- 30. 如何检查Windows Azure中的网络总流量(虚拟机)
在一个字符串,它很长时间,也许像RAM,划痕空间,可寻址空间等物理问题可能会发挥作用......但我相信只要你不这样做。关闭,.Flush或添加一行终止符,然后将它保存为一个连续的行。 – 2013-03-07 14:57:03