x


BinaryWriter or Serialization in mobile?

Hello everyone!

This is a quick quiz: I successfully created a C# with .net 2.0 server that can receive a message from unity (no big achievement here though). Now, I'm aware that unity has some issues in mobile platforms using serialization. My question is: does binarywriter of http://system.io work well in mobile platforms? The variables/objects I will be sending are pretty small and IMHO not worth a serialization if it will cause too much trouble.

Long story short: Should I use serialization if I'm working for mobile platforms or just send the binary data using a BinaryWriter?

Thanks a ton!

Damian

more ▼

asked Jul 04 '12 at 03:44 PM

Damieh gravatar image

Damieh
34 2 2 4

(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

Well I use BinaryFormatter to send information between clients and servers - works well for me. Supported on mobile using subset and full .NET

more ▼

answered Jul 04 '12 at 05:31 PM

whydoidoit gravatar image

whydoidoit
32.9k 11 23 98

Great! It's a little hard to send information using binaryformatter with my poor knowledge through streams that use TCP. An xml will be easier, are you aware if xml readers/writers work in unity mobile too? Thanks a lot man =)

Jul 04 '12 at 05:36 PM Damieh

No binary formatter is dead easy - like this to create a compressed string:

  var m = new MemoryStream();
  var b = new BinaryFormatter();
  b.Serialize(m, yourObject);
  var s = Convert.ToBase64String(b.GetBuffer());

Like this to decompress it:

  var m = new MemoryStream(Convert.FromBase64String(dataYouReceived));
  var b = new BinaryFormatter();
  var o = (YourObject)b.Deserialize(m);

You'll need http://System.IO and System.Runtime.Serialization.Binary I think.

Jul 04 '12 at 05:40 PM whydoidoit

I tried using binaryformatter and memorystream before and I failed due to an exception telling me that the data was not the type it expected... but....

You've got to be kidding me, I can send ANY OBJECT in form of a string this way??

Say, if I send with Serialize an object of type foo, I can deserialize it with var o = (foo)b.Deserialize(memoryStream)?

If that's the case I love you =P. I'll try it now.

Jul 04 '12 at 05:54 PM Damieh

Yes you can do that if it is a serializable object or you do the dance of making the custom stuff if it is more complex.

Jul 04 '12 at 06:00 PM whydoidoit

This works flawlessly. Thanks a ton!! I will now have to make a kind of header telling the server what kind of object I'm sending so I can do the typecast correctly, because this works only if you know the type of the object you're receiving =).

Thanks a lot man, I really appreciate it!

Jul 04 '12 at 07:42 PM Damieh
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x679
x413
x175
x59
x2

asked: Jul 04 '12 at 03:44 PM

Seen: 1062 times

Last Updated: Aug 15 '12 at 05:26 AM