这个让我感到困惑。当我甚至没有打电话时,我遇到了关于寻找的错误?为什么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