Сериализация / десериализация - 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"; ;
}
}
}