問題很簡單:網絡流的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. 網絡傳遞
- 2. 通過網絡傳輸GetBitmapBits(),安全嗎?
- 3. 在JavaScript中傳遞空回調是不好的做法嗎?
- 4. 總是運行網絡android應用程序的最佳做法是什麼?
- 5. 在mysql中,「解釋...」總是安全嗎?
- 6. 網絡安全 - url參數安全嗎?
- 7. 在C++中使用引用傳遞總是更好嗎?
- 8. 如何使用Cocoa實現安全的網絡消息傳遞
- 9. 來自網絡的Icecast流式傳輸
- 10. arbitino可以做網絡請求嗎?
- 11. 傳遞參數使用ksoap2到.net網絡服務,總是傳遞NULL(空)值
- 12. 是否在本地網絡上使用TCP或UDP進行視頻流傳輸?
- 13. 的dashbord'項目 - >網絡 - >網絡Topology`總是加載
- 14. 我可以依賴DataAvailable進行SSL封裝的網絡流嗎?
- 15. 在URI中傳遞資源ID的最佳安全做法
- 16. ALSA PCM設備網絡流式傳輸
- 17. 如何檢查Windows Azure中的網絡總流量(虛擬機)
- 18. 在C#中只寫WriteLine代替Console.WriteLine是可能的嗎?
- 19. 網絡流程
- 20. NAudio網絡流
- 21. C++網絡流
- 22. 網絡交換機的網絡流量隔離行爲
- 23. PHP程序總是在網絡服務器上運行
- 24. zlib:壓縮流總是一樣的嗎?
- 25. Wolfram Mathematica中的神經網絡包不是平行的嗎?
- 26. 網絡安全
- 27. 網絡安全
- 28. 是否.Disposing StreamWriter關閉底層流?
- 29. 如何在contiki cooja中模擬水流傳感器網絡?
- 30. 在ARM板(i.MX6)中流傳輸USB網絡攝像頭
在一個字符串,它很長時間,也許像RAM,劃痕空間,可尋址空間等物理問題可能會發揮作用......但我相信只要你不這樣做。關閉,.Flush或添加一行終止符,然後將它保存爲一個連續的行。 – 2013-03-07 14:57:03