这个让我很困惑。当我什至没有调用它时,我收到有关搜索的错误?
我的代码看起来像这样:
// 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)
edit:
就是这样!虽然人们可以在一台计算机上读写NetworkStream
,当切换到BufferedStream
需要有一个单独的阅读器和写作器。人们显然可以直接调用NetworkStream
构造函数在同一个套接字上两次以获取该值。
如果可以的话,我会接受贾斯汀和汉斯的答案,因为一个让我确切地理解出了什么问题,另一个让我找到了解决方案。感谢大家!