这个问题困扰着我。我在没有调用它的情况下收到有关“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的答案,因为一个让我完全理解了问题出在哪里,而另一个则引导我找到了解决方案。感谢大家!