Не десериализирует :( - C#
Формулировка задачи:
Привет всем.Ето новая тема для меня..Я нуб еще,но всеравно.Пишу сервер,есть код:
клиент принимает ето дело:
Клиент выдает:
<?xml version="1.0"?>
ExemptionSystem.Collection.ListDictionaryInternal
Но если забрать Command a = Deserialize(bytes);
Console.WriteLine(a.command);
тогда в консоли будет все сообщение..Как сделать так , что б обект на входе в клиент нормально десерелизировался..Или у кого есть пример на етот щет,поделитесь плс..
Использую TcpClient.Помогите
Уже 2 день не могу разобратся
Command ds=new Command(); ds.command = "3"; ds.id = "dsad"; byte[] dataWrite = Serialize(ds); byte[] tmp = Encoding.UTF8.GetBytes("\r\n"); byte[] result=new byte[dataWrite.Length+tmp.Length]; dataWrite.CopyTo(result,0); tmp.CopyTo(result,dataWrite.Length); NetworkStream writeStream = client.ClientSocket.GetStream(); writeStream.Write(result, 0, result.Length); public static byte[] Serialize(Command obj) { XmlSerializer ser = new XmlSerializer(typeof(Command)); MemoryStream stream = new MemoryStream(); ser.Serialize(stream, obj); return stream.ToArray(); }
XmlSerializer ser = new XmlSerializer(typeof(Command)); byte[] bytes = readerStream.CurrentEncoding.GetBytes(readerStream.ReadLine()); Array.Resize<byte>(ref bytes,bytes.Length); Console.WriteLine(Encoding.UTF8.GetString(bytes)); Command a = Deserialize(bytes); Console.WriteLine(a.command); public static Command Deserialize(byte[] data) { MemoryStream stream = new MemoryStream(); BinaryFormatter formatter = new BinaryFormatter(); stream.Write(data, 0, data.Length); stream.Seek(0, SeekOrigin.Begin); Command a = (Command) formatter.Deserialize(stream); stream.Close(); return a; }
Решение задачи: «Не десериализирует :(»
textual
Листинг программы
while (true) { byte[] bytes = Encoding.ASCII.GetBytes(readerStream.ReadLine()); if (Encoding.UTF8.GetString(bytes).Contains("<?xml")) { main = bytes; while (!Encoding.UTF8.GetString(bytes).Contains("</Command>")) { bytes = Encoding.ASCII.GetBytes(readerStream.ReadLine()); bytes = bytes.Concat(Encoding.ASCII.GetBytes("\r\n")).ToArray(); main = main.Concat(bytes).ToArray(); } Command RecievedCommand = new Command(); RecievedCommand = Deserialize(main); AsynchronousClient.CommandInjecting(RecievedCommand); } } eClient.Close(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д