Stream serialisieren

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von φConst.

    Stream serialisieren

    Guten Abend,
    ist es möglich obschon "NetworkStream" als nicht serialisierbar markiert ist, diesen zu serialisieren ?

    Ich wollte quasi einen NetworkStream serialisieren ( in ein Byte Array ) und diesen dann versenden um damit zu experimentieren.
    Kennt ihr einen Kompromiss?

    Lieben Dank!
    Und Gott alleine weiß alles am allerbesten und besser.
    Der einzige wirkliche Kompromiss, der mir da spontan einfällt, ist, den Endpoint zu serialisieren, der für den Networkstream verwendet wurde. Normalerweise entspringt der ja Socket, das hat wiederum eine entsprechende Eigenschaft. Vom Stream selbst kann man wohl nicht auf das Socket schließen, die Eigenschaft ist protected.

    Viele Grüße
    ~blaze~

    φConst schrieb:

    "NetworkStream" als nicht serialisierbar markiert ist, diesen zu serialisieren
    Wenn MS den NetworkStream schon mit <Noterialize> gekennzeichnet ist, dann geh ich mal davon aus, dass das auch so gewollt ist und nicht, dass dann jemand daher kommt und das unter allen Umständen dannn auch zu serialisieren. Wird schon seine Gründe haben (welche auch immer das sein mögen)

    Eine Frage dazu: Warum genau willst du den NetworkStream - bzw genau gesagt die "Verbinden" serialisieren? Wenn es dir um die Wiederaufnahme einer Verbindung geht, kannst du die Verbindungdaten in einem Business-Object speichern und das dann serialisieren/deserialisieren.

    Lg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell
    Also nur um nochmal ganz sicher zu gehen φConst, du willst wirklich nicht einfach die Daten die aus dem Stream kommen serialisieren und dir dann selbst nochmal öfters schicken um experimentell eine Gegenschnittstelle oder so zu schreiben, sondern wirklich die aktuelle "Verbindung" um die dann an anderer Stelle wieder auf zu nehmen?

    φConst schrieb:

    Die "Verbindung"
    Ich bin mir ziemlich sicher, dass das nicht funktioniert, selbst wenn man die Verbindung serialisieren könnte.
    Meines Wissens nach wird bei der Erstellung eines NetworkStreams (über einen TCPClient o.ä.) ein Handshake mit dem entsprechenden Partner durchgeführt. Selbst wenn es also gelingen sollte die Verbindung irgendwo auf einer Seite der Kommunikation zu speichern, so dürfte die andere Seite nicht bereit sein, mit dieser Verbindung zu arbeiten.

    Grüße
    Väinämö
    Die Frage ist wirr. Eine "Verbindung" ist kein Objekt. Das ergibt gar keinen Sinn "Verbindung" serialisieren zu wollen.

    Auch einen Networkstream kann man nicht serialisieren. Da hängt doch ein Socket dran, und das Betriebssystem muss iwelche Handles halten, Ports reservieren und was nicht alles. Diese ganzen Zustände können doch nicht in ein Byte-Array gewandelt werden.

    Ich hab den Eindruck, der TE verwechselt Transportmittel und Transportiertes. Also ein Networkstream kann selbstverständlich serialisierte Objekte übertragen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Mir ist bewusst Serialisiertes über einen NetworkStream übertragen zu können, (siehe DotNetWork), habe mich jedoch gefragt ob man einen "Stream serialisieren" könne.
    Wie du und Vainamo V jedoch schön paraphrasiert habt ist dies ein wenig paradox.

    Nichtsdestotrotz, danke ^^
    Und Gott alleine weiß alles am allerbesten und besser.