यह एक मुझे पहेली करता है। मुझे यह जानने में कोई त्रुटि मिलती है कि मैं इसे कॉल नहीं कर रहा हूं?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
पर पढ़ और लिख सकता है, तो पढ़ने और लिखने के लिए अलग होना आवश्यक है। यह स्पष्ट रूप से NetworkStream
कन्स्ट्रक्टर को उसी सॉकेट पर दो बार कॉल करने के लिए कॉल कर सकता है।
अगर मैं कर सकता था तो मैं जस्टिन और हंस के दोनों उत्तरों को स्वीकार करता हूं, क्योंकि कोई मुझे सही समझने देता है कि क्या गलत था, और दूसरे ने मुझे समाधान के लिए प्रेरित किया। सबको धन्यवाद!
यदि मदद करता है, तो BufferedStream नेटवर्कस्ट्रीम के शीर्ष पर है। – redtuna
आपने buffered स्ट्रीम और किस आकार को घोषित किया है? यह किस प्रकार का प्रवाह है? और आकार (uint) का आकार नहीं होना चाहिए। लम्बाई? –