Serialisierung: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung
Zeile 39: Zeile 39:
</source>
</source>
Man muss dabei beachten, daß die Klasse <tt>BinaryFormatter</tt><ref name="BinFormatter">http://msdn.microsoft.com/de-de/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx MSDN-Artikel zur Klasse BinaryFormatter</ref> wesentlich mehr kann als die Klasse <tt>XmlSerializer</tt><ref name=XmlSrielizer">http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx MSDN-Artikel zur Klasse XmlSerializer</ref>, die dafür auch auf der [[XBox 360]] zur Verfügung steht.
Man muss dabei beachten, daß die Klasse <tt>BinaryFormatter</tt><ref name="BinFormatter">http://msdn.microsoft.com/de-de/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx MSDN-Artikel zur Klasse BinaryFormatter</ref> wesentlich mehr kann als die Klasse <tt>XmlSerializer</tt><ref name=XmlSrielizer">http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx MSDN-Artikel zur Klasse XmlSerializer</ref>, die dafür auch auf der [[XBox 360]] zur Verfügung steht.
== Netzwerk ==
Man kann mit Serialisierung auch Daten über ein Netzwerk schicken. Das Pronzip ist das gleiche, da die Formatter auf Streams arbeiten. Was für einen Stream man nimmt ist ihnen egal. Für Netzwerkfunktionalität bieten sich entweder die speziellen [[XNA]]-Klassen dafür an, oder man schreibt die Funktionalität selbst. Dies ist flexibler, man braucht keinen [[XBox 360|XBos-Live]]-Account. Dafür funktioniert sie auf der XBox nicht.
Die nötigen Klassen finden sich im [[Namespace]]
System.Net.Sockets
Hier ein kleines Beispiel für einen Server, der einen String entgegen nimmt.
<source lang="csharp">
TcpListener listener = new TcpListener(11111);
listener.Start();
using (var client = listener.AcceptTcpClient())
{
Stream s = client.GetStream();
BinaryFormatter bf = new BinaryFormatter();
String str = (String)bf.Deserialize(s);
Console.WriteLine(str);
Console.ReadLine();
}
listener.Stop();
</source>
und hier der passende Client
<source lang="csharp">
using (TcpClient client = new TcpClient("localhost", 11111))
{
Stream s = client.GetStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(s, Console.ReadLine());
}
Console.ReadLine();
</source>


== Video Tutorial ==
== Video Tutorial ==