Laden...

Serialize IPEndPoint

Erstellt von Crone vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.409 Views
C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 10 Jahren
Serialize IPEndPoint

Hallo zusammen,

Ich versuche zur Zeit mir ein kleines Peer to Peer Programm zu entwickeln

Client verbindet zu Server
Server sendet Client eine Client-liste (Server Serialisiert eine Klasse diese enthält auch einen IPEndPoint.)

Ich hab die Daten beim versendet extra nochmals geprüft, die IPEndPoint.Adress enthält die IP. Beim Client ist IPEndPoint.Adress jedoch null.

Kann mir jemand zufällig sagen wieso?

Es gibt keinerlei Fehlermeldungen und im netz konnte ich bisher auch nichts dazu finden.

Ist IPEndPoint nicht Serialisierbar oder handelt es sich sogar um einen DotNet Bug?

Hier noch mein Code:

            BinaryFormatter binaryF = new BinaryFormatter();
            MemoryStream ms = new MemoryStream(buffer, 0, buffer.Length, false);
            object obj = binaryF.Deserialize(ms);
            BinaryFormatter binaryF = new BinaryFormatter();
            MemoryStream ms = new MemoryStream(1024 * 10);
            binaryF.Serialize(ms, obj);
            ms.Seek(0, SeekOrigin.Begin);
            byte[] buffer = new byte[(int)ms.Length];
            ms.Read(buffer, 0, buffer.Length);
            ms.Close();

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

16.842 Beiträge seit 2008
vor 10 Jahren

Wie in der Doku nachzulesen ist, ist IPAddress standardmäßig nicht direkt zu serialisieren.
Abhilfe: mit ToString und Parse arbeiten selbst implementieren.

PS: wenn man nach c# IPAddress serialize suchst dann findest Du unzählige Themen mit identischem Inhalt.

C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 10 Jahren

Hallo,

Erstmal danke für die Antwort.

Jedoch konnt ich gestern sowie auch heute keine stelle in der Doku finden wo gesagt wird das ein IPEndPoint nicht Serialisierbar ist.

Zum anderen stellt sich dann folgende Frage, Warum lassen sich IPEndPoints aber ohne Probleme im LAN Serialisieren.

Das Problem mit den IPEndPoints hatte ich erst als ich es im Internet mit einen richtigen Server testete. Im Lokalen-Netzwerk war das Serialisieren, jedoch kein Problem und die Applicaiton hat ohne Probleme funktioniert.

Gruß Crone

Real programmers don't comment their code - it was hard to write, it should be hard to understand.

2.760 Beiträge seit 2006
vor 10 Jahren

Servus Crone,

ich habe mal testweise in einer Konsolenanwendung (.Net 4.5) versucht dein Problem nachzuvollziehen und dort funktioniert das De-/Serialisieren mit dem BinaryFormatter wunderbar.

Zum anderen stellt sich dann folgende Frage, Warum lassen sich IPEndPoints aber ohne Probleme im LAN Serialisieren.

Was meinst du damit? Es sollte wurscht sein über welches Medium du ein byte[] transportierst solange sichergestellt ist das die Daten auch wieder richtig zusammengesetzt werden und zuverlässig übertragen werden (verwendest du UDP???)

C
Crone Themenstarter:in
168 Beiträge seit 2010
vor 10 Jahren

Ja ich verwende UDP.

IPEndPoints lassen sich grundsätzlich übertragen nur die variable "Adress" des IPEndPoints wird auf null gesetzt.

Auf übertragungsfehler würde ich es jetzt nicht schieben sonst wäre das Problem glaube ich nicht immer an der selben stellen.

Warum das im Lan funktioniert und im Internet nicht ist mir auch ein Rätsel 😃

Im Lan kann ich so wie du ohne Probleme De-/Serialisieren aber mit .Net 4.0

Naja ich sende nun die IP und den Port als Variablen mit und bau mir daraus den IPEndPoint auf der anderen seite selbst zusamme... das funktioniert wenigstens 😃

Real programmers don't comment their code - it was hard to write, it should be hard to understand.