【发布时间】:2010-06-22 17:41:19
【问题描述】:
这个让我很困惑。当我什至没有调用它时,我得到一个关于 seek 的错误?
我的代码看起来像这样:
// 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 构造函数两次来获得它。
如果可以的话,我会同时接受 Justin 和 Hans 的回答,因为一个让我准确地理解出了什么问题,另一个让我找到了解决方案。谢谢大家!
【问题讨论】:
-
如果有帮助,BufferedStream 位于 NetworkStream 之上。
-
你是如何声明缓冲流的,大小是多少?它与什么流类型相关联?并且 sizeof(uint) 不应该是 msg.length 吗?
标签: c# networkstream bufferedstream