这让我很困惑。当我什至没有调用它时,我得到一个关于 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
,但在切换到 aBufferedStream
时,必须有一个单独的用于读写。显然可以NetworkStream
在同一个套接字上调用构造函数两次来获得它。
如果可以的话,我会同时接受贾斯汀和汉斯的回答,因为一个让我完全理解出了什么问题,另一个让我找到了解决方案。感谢大家!