これは私を困惑させます。呼び出していないのにシークについてエラーが発生しますか?
私は次のようなコードを持っています:
// 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)
編集:
それでした!1つので読み取りと書き込みを行うことができますがNetworkStream
、に切り替えるときBufferedStream
は、読み取りと書き込み用に別のを用意する必要があります。どうやらNetworkStream
、同じソケットでコンストラクターを2回呼び出すだけで、それを取得できるようです。
可能であれば、ジャスティンとハンスの両方の回答を受け入れます。一方が私に何が悪かったのかを正確に理解させ、もう一方が私を解決策に導いたからです。みんな、ありがとう!