這個讓我感到困惑。當我甚至沒有打電話時,我遇到了關於尋找的錯誤?爲什麼BufferedStream.Write會拋出「此流不支持查找操作」?
我有一些代碼看起來是這樣的:
// send 42
uint value = 42;
byte[] msg = BitConverter.GetBytes(value);
stream.Write(msg, 0, sizeof(uint));
,我得到這個異常:
System.NotSupportedException was unhandled
Message="This stream does not support seek operations."
Source="System"
StackTrace:
at System.Net.Sockets.NetworkStream.Seek(Int64 offset, SeekOrigin origin)
at System.IO.BufferedStream.FlushRead()
at System.IO.BufferedStream.Write(Byte[] array, Int32 offset, Int32 count)
...
流System.IO.BufferedStream
類型。可能會發生什麼?
編輯更多信息:
在這種情況下sizeof(uint)==msg.length
。
流被聲明爲stream = new BufferedStream(new NetworkStream(socket), 1024)
編輯:
這就是它!雖然人們可以在一個NetworkStream
上進行讀寫操作,但在切換到BufferedStream
時,必須有一個單獨的讀寫器。顯然,只需在同一個套接字上調用兩次構造函數NetworkStream
即可。
如果可以的話,我會接受賈斯汀和漢斯的答案,因爲一個讓我明白了什麼是錯的,另一個讓我找到解決方案。感謝大家!
如果有幫助,BufferedStream位於NetworkStream之上。 – redtuna 2010-06-22 17:53:24
你怎麼聲明緩衝流和什麼大小?它與哪種流類型相關聯?並且不應該sizeof(uint)是msg.length? – 2010-06-22 17:59:39