I serialize class object to XML and trying sending over TCP Socket, this is what I succesfully sent (Im sending only DateTime property) (from the Server): = File: SENT.XML
<?xml version="1.0"?> <ArrayOfBitmapTransfer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <BitmapTransfer> <Datetime>2016-01-06T21:15:52.189</Datetime> </BitmapTransfer> </ArrayOfBitmapTransfer> And this is what I receive on the client = File: RECIEVED.XML
nsfer>on="1.0"?> <ArrayOfBitmapTransfer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <BitmapTransfer> <Datetime>2016-01-06T21:15:52.189</Datetime> </BitmapTransfer> </ArrayOfBitmapTransfer>on="1.0"?> <ArrayOfBitmapTransfer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <BitmapTransfer> <Datetime>2016-01-06T21:15:52.189</Datetime> </BitmapTransfer> </ArrayOfBitmapTra There are missing letters and It seems it was sent two times.
BUT When I send plain text e.g. "Hello, My name is John" - everything is delivered OK and there are not missing letters or duplicity.
Codes:
/// <summary> /// Serializes Array of Bitmaps to byte array /// </summary> internal byte[] Serialize(BitmapTransfer[] bitmaps) { using (MemoryStream memoryStream = new MemoryStream()) { XmlSerializer xs = new XmlSerializer(typeof(BitmapTransfer[])); xs.Serialize(memoryStream, bitmaps); System.IO.File.WriteAllText(@"C:\sent.xml", Encoding.Default.GetString(bitmaps)); return memoryStream.ToArray(); } } /// <summary> /// Deserializes byte array to BitmapTransfer array /// </summary> internal BitmapTransfer[] Deserialize(byte[] data) { using (MemoryStream stream = new MemoryStream(data)) { XmlSerializer formatter = new XmlSerializer(typeof(BitmapTransfer[])); File.WriteAllText(@"C:\recieved.xml", System.Text.Encoding.Default.GetString(data)); return (BitmapTransfer[])formatter.Deserialize(stream); } }
No comments:
Post a Comment