У меня проблема с этим кодом здесь.
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();
}
Я не могу понять, что здесь происходит или почему это не работает. Вроде то ли не копирует, то ли сетевой поток закрывает, то ли еще что.
Извините, я пытался его отладить, но если кто-нибудь увидит здесь какую-либо очевидную проблему, я был бы признателен.
Кстати, класс сериализуется нормально, а MemoryStream содержит данные, но по какой-то причине выполнение ms.CopyTo(ns) просто не работает?
По сути, я хочу сериализовать класс в сетевой поток с предшествующим ему размером сериализованных данных. Если у кого-то есть лучший способ сделать это, дайте мне знать!
ms.Position = 0;
послеms.Write
. Редактировать: на самом деле первыйms.Position = 0;
кажется неправильным, поскольку вы перезаписываете данные, которые вы только что написали. - person leppie   schedule 29.11.2011