我在這裏遇到此代碼的問題。內存流copyto網絡流問題
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms,SerializableClassOfDoom);
ms.Position = 0;
byte[] messsize = BitConverter.GetBytes(ms.Length);
ms.Write(messsize, 0, messsize.Length);
NetworkStream ns = Sock.GetStream();
ms.CopyTo(ns);
//ms.Close();
}
我找不出這裏發生了什麼,或者爲什麼它不工作。它看起來像eather它不會複製,或者它關閉網絡流,或什麼。
對不起,我試過調試它,但如果任何人都可以在這裏看到任何明顯的問題,我將不勝感激。
順便說一句,該類序列化很好,並且MemoryStream包含數據,但由於某種原因,做一個ms.CopyTo(ns)似乎並不工作?
本質上,我想要做的就是將類序列化到網絡流,並在其之前的序列化數據的大小。如果有人有更好的方法來做到這一點,讓我知道!
我的猜測是,在你離開使用塊之後,NetworkStream被處置,因爲它超出了範圍。您可以嘗試在使用塊結束之前將其刷新。或者你的問題在別的地方? –
嘗試在使用結束之前刷新內存流和網絡流,但似乎也沒有這樣做。 –
'ms.Write'後面需要另一個'ms.Position = 0;'。編輯:實際上,首先'ms.Position = 0;'似乎是錯誤的,因爲你正在覆蓋你剛剛寫的數據。 – leppie