Не десериализирует :( - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем.Ето новая тема для меня..Я нуб еще,но всеравно.Пишу сервер,есть код:
 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;
    }
Клиент выдает: <?xml version="1.0"?> ExemptionSystem.Collection.ListDictionaryInternal Но если забрать Command a = Deserialize(bytes); Console.WriteLine(a.command); тогда в консоли будет все сообщение..Как сделать так , что б обект на входе в клиент нормально десерелизировался..Или у кого есть пример на етот щет,поделитесь плс.. Использую TcpClient.Помогите Уже 2 день не могу разобратся

Решение задачи: «Не десериализирует :(»

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();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5