- Home /
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 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
Answer by whydoidoit · Jul 04, 2012 at 05:31 PM
Well I use BinaryFormatter to send information between clients and servers - works well for me. Supported on mobile using subset and full .NET
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 =)
No binary formatter is dead easy - like this to create a compressed string:
var m = new $$anonymous$$emoryStream();
var b = new BinaryFormatter();
b.Serialize(m, yourObject);
var s = Convert.ToBase64String(b.GetBuffer());
Like this to decompress it:
var m = new $$anonymous$$emoryStream(Convert.FromBase64String(dataYouReceived));
var b = new BinaryFormatter();
var o = (YourObject)b.Deserialize(m);
You'll need System.IO and System.Runtime.Serialization.Binary I think.
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.
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.
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!
Your answer
Follow this Question
Related Questions
Unity networking tutorial? 6 Answers
Popular Multiplayer Framework/Services? 0 Answers
Players can't connect to my server 0 Answers
Setting pose to a particular point in an animation 0 Answers
How to set up a proxy server for network multiuplayer with Unity? 0 Answers