Сериализация / десериализация - C#
Формулировка задачи:
доброе время суток=)
такое задание - отправить объект класса с приложения клиента на сервер
это код который сериализует на клиенте
Смотрел примеры в нэте но все равно что-то не так. чтоб убедиться что сериализация работает, на сервере пока что принимаю сообщение в виде строки. присылается код XML в котором записан мой объект.
помогите с десериализовать
Car car3 = new Car(); MemoryStream memStream = new MemoryStream(); XmlSerializer serializer = new XmlSerializer(typeof(Car)); serializer.Serialize(memStream, car3); memStream.Close(); msg = memStream.GetBuffer(); bytesSent = snd.Send(msg);
Решение задачи: «Сериализация / десериализация»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Text; //// using System.Net; using System.Net.Sockets; using System.Xml.Serialization; using System.IO; namespace Server2 { class Program { static string str2; static void Main(string[] args) { Console.Write("Запуск программы.\n"); string host = Dns.GetHostName(); IPHostEntry ipHost = Dns.GetHostEntry(host); IPAddress[] ipAddr = ipHost.AddressList; //Console.Write("Используемый IP - {0}", ipAddr); for (int i = 0; i < ipAddr.Length; i++) { string str; str = ipAddr[i].ToString(); Console.Write("IP {0} = {1}\n", i, str); } Console.Write("Введите номер IP адресса который желаете использовать\n"); string numIPstr; numIPstr = Console.ReadLine(); int numIP; numIP = Convert.ToInt32(numIPstr); Console.Write("Ваш выбор IP номер {0}.\n", numIP); str2 = ipAddr[numIP].ToString(); IPEndPoint ipEndPoint = new IPEndPoint(ipAddr[numIP], 11000); // Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // try { sListener.Bind(ipEndPoint); sListener.Listen(10); while (true) { Console.WriteLine("Ожидаем подключение на порт {0}", ipEndPoint); Socket handler = sListener.Accept(); string data = null; while (true) { byte[] bytes = new byte[1024]; int byteRec = handler.Receive(bytes); data = Encoding.ASCII.GetString(bytes, 0, byteRec); XmlSerializer serialiser = new XmlSerializer(typeof(Trasporter)); Trasporter s = (Trasporter)serialiser.Deserialize(new MemoryStream(Encoding.UTF8.GetBytes(data))); Console.Write("Наш элемент -->\r\n" + s.ToString()); if (data.IndexOf("<TheEnd>") > -1) { break; } } Console.WriteLine("Text Received: {0}", data); string theReply = "Thank you for " + data.Length.ToString() + " characteries..."; byte[] msg = Encoding.ASCII.GetBytes(theReply); handler.Send(msg); handler.Shutdown(SocketShutdown.Both); handler.Close(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } [Serializable] public class Trasporter { //набор данных для владельца public string itsRnnOwner;// { get; set; } public string itsSurname;// { get; set; } public string itsName;// { get; set; } public string itsTelNumber;// { get; set; } public string itsSex;// { get; set; } public string itsBirstDay;// { get; set; } public string itsPost;// { get; set; } //набор данных для автомобиля public string itsNumCar;// { get; set; } public string itsNumEngine;// { get; set; } public string itsNumChassie;// { get; set; } public string itsDateOutput;// { get; set; } public string itsCodeDistrict;// { get; set; } public string itsCodeBrand;// { get; set; } public string itsCodeBodyCar;// { get; set; } public string itsCodeColor;// { get; set; } //public string itsRnnOwner; public Trasporter() { itsRnnOwner = "none"; itsSurname = "none"; itsName = "none"; itsTelNumber = "none"; itsSex = "none"; itsBirstDay = "none"; itsPost = "none"; itsNumCar = "none"; itsNumEngine = "none"; itsNumChassie = "none"; itsDateOutput = "none"; itsCodeDistrict = "none"; itsCodeBrand = "none"; itsCodeBodyCar = "none"; itsCodeColor = "none"; //itsRnnOwner = "none"; } public void InputDataOwner(string rnn, string surname, string name, string phone, string sex, string birstday, string post) { itsRnnOwner = rnn; itsSurname = surname; itsName = name; itsTelNumber = phone; itsSex = sex; itsBirstDay = birstday; itsPost = post; } public void InputDataCar(string numcar, string numengine, string numchassie, string dataoupput, string district, string brand, string bodycar, string color, string rnn) { itsNumCar = numcar; itsNumEngine = numengine; itsNumChassie = numchassie; itsDateOutput = dataoupput; itsCodeDistrict = district; itsCodeBrand = brand; itsCodeBodyCar = bodycar; itsCodeColor = color; itsRnnOwner = rnn; } public override string ToString() { return "RRN = " + itsRnnOwner + "\r\nSurname = " + itsSurname + "\r\nName = " + itsName + "\r\nPhone number = " + itsTelNumber + "\r\nSex = " + itsSex + "\r\nBirstday = " + itsBirstDay + "\r\nPost = " + itsPost + "\r\nNumber car = " + itsNumCar + "\r\nNumber engine = " + itsNumEngine + "\r\nNumber chassie = " + itsNumChassie + "\r\nDate output = " + itsDateOutput + "\r\nDistrict = " + itsCodeDistrict + "\r\nBrand = " + itsCodeBrand + "\r\nBodycar = " + itsCodeBodyCar + "\r\nColor = " + itsCodeColor //+ "\r\nRNN = " + itsRnnOwner + "\r\n"; ; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д