Announcement

Collapse
No announcement yet.

Bild über einen NetworkStream versenden

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bild über einen NetworkStream versenden

    Hallo,

    ich möchte ein Bild (etwa 20-30 kb groß) über einen NetworkStream versenden. Dieses Bild habe ich als Byte-Array vorliegen. Nun sende ich erst die Größe des Bildes, dann das eigentliche Bild

    <pre style="font-size:10pt;font-family:Courier New;font-weight:normal;font-style:normal;color:#282828;background-color:white;"><font color="#32cd32">' Größe des Bildes senden</font>

    MeinNetworkStream.Write(BitConverter.GetBytes(Bild .Length), 0, 4)

    <font color="#32cd32">' Eigentliche Bilddaten senden</font>

    MeinNetworkStream.Write(Bild, 0, Bild.Length)</pre>

    Auf der anderen Seite empfange ich die Daten wieder

    <pre style="font-size:10pt;font-family:Courier New;font-weight:normal;font-style:normal;color:#282828;background-color:white;"><font color="#32cd32">' Länge als Byte-Array empfangen</font>

    <font color="#3366ff">Dim</font> LengthBytes() <font color="#3366ff">As Byte</font>

    MeinNetworkStream.Read(LengthBytes, 0, 4)

    <font color="#32cd32">' Zurück in einen Integer wandeln</font>

    <font color="#3366ff">Dim</font> Length <font color="#3366ff">As Integer</font>

    Length = BitConverter.ToInt32(LengthBytes, 0)

    <font color="#32cd32">' Bilddaten empfangen</font>

    <font color="#3366ff">Dim</font> Bild() <font color="#3366ff">As Byte</font>

    MeinNetworkStream.Read(Bild, 0, Length)</pre>

    Wenn ich mir dann den Inhalt des Byte-Arrays im Debugger anzeigen lasse, scheint der (zumindest am Anfang) gleich dem orginalem Bild. Allerdings sind die MD5 Hashes beider Arrays unterschiedlich. Wenn ich mir das übertragene Bild dann in einer PictureBox anzeigen lasse, sieht das in etwa so aus: <a href="http://www.guckmoldrauf.de/ergebnis.png">www.guckmoldrauf.de/ergebnis.png</a>. Das passiert aber nur, wenn ich eine Verbindung übers Internet aufbaue. Verwende ich zum Verbinden meiner Sockets meine lokale IP, dann wird das Bild perfekt übertragen.

    Kann es wirklich sein, dass bei der Übertragung so viele Bytes fehlerhaft übertragen werden? (es sind ja nicht nur ein paar Pixel) Oder muss ich das vielleicht Paketweise übertragen? Macht das nicht schon die NetworkStream Klasse für mich? Was muss ich machen, damit das Bild schnell, aber ohne Fehler übertragen wird?
Working...
X