aicher1998
Goto Top

VB.Net Screenshot übers Netzwerk übertragen

Hallo

Ich möchte einen Screenshot übers Netzwerk übertragen und hab mir dazu einen simplen Server und Client geschrieben.

Irgendwie hapert es bei der Übertragung.


Der Screenshot ist 158.508 Bytes groß und nach Übertragung ist er auf einmal 4.196.406 Bytes groß...

Mein Server
Public Class xServer
    Dim t As New Thread(AddressOf Main)

    Event PicReceived(ByVal img As Image)

    Sub New()
    End Sub

    Sub Start()
        t.Start()
    End Sub

    Private Sub Main()
        Dim tcpListener As New TcpListener(IPAddress.Any, 13500)
        tcpListener.Start()
        Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient

        Dim stream As NetworkStream = tcpClient.GetStream()

        Dim oMemoryStream As New MemoryStream

        Do
            Dim rbuffer(32768) As Byte
            Dim size As Integer = stream.Read(rbuffer, 0, rbuffer.Length)
            oMemoryStream.Write(rbuffer, 0, size)

            Thread.Sleep(2) 'Ohne Sleep werden viel zu wenig Daten übertragen  
        Loop While stream.DataAvailable
        MsgBox("Fertig")  

        tcpClient.Close()


        My.Computer.FileSystem.WriteAllBytes("test.bmp", oMemoryStream.ToArray, False)  

    End Sub


End Class


Mein Client
Public Class xClient
    Dim tcpClient As New TcpClient

    Sub New()
    End Sub

    Public Function Connect() As Boolean
        tcpClient.Connect("127.0.0.1", 13500)  
    End Function

    Public Sub SendData(ByVal bmp As Bitmap)
        Dim bwriter As New BinaryWriter(tcpClient.GetStream)

        Dim oMemoryStream As New MemoryStream
        bmp.Save(oMemoryStream, ImageFormat.Bmp)

        Dim wbuffer() As Byte = oMemoryStream.ToArray()

        bwriter.Write(wbuffer)
    End Sub
End Class

Ich hb schon sehr viel am Buffer versucht (1, 64, 1024, 4096, 65536) hat alles nichts gebracht..

Das Bild lässt sich aber trotzdem fehlerfrei darstellen.

Was mach ich falsch?

Früher hab ich für sowas immer das Winsock Control benutzt aber ich hab gehört, dass man das nicht mehr verwenden sollte?
Kennt vielleicht jemand etwas gleichwertiges in open source ?
==> Wäre ehrlich gesagt besser als eine Überarbeitung meines Codes aber beides wäre super!

Ich hab schon eine kleine Class für Server und Client geschrieben, die etwas komplexer aufgebaut ist, die sogar eine vorherige Authentifikation ermöglicht. Aber nur auf Textbasis face-sad

Gruß
Chris

Content-ID: 306870

Url: https://administrator.de/forum/vb-net-screenshot-uebers-netzwerk-uebertragen-306870.html

Ausgedruckt am: 22.12.2024 um 14:12 Uhr

atze187
atze187 12.06.2016 um 10:53:25 Uhr
Goto Top
Hallo,

ich gehe davon aus, dass es sich beim Bildformat der Quelle um ein komprimiertes Format wie .jpg handelt. Beim Speichern auf dem Client als .bmp wird dann wieder alles Pixel-weise gespeichert was von Hause aus mehr Platz benötigt.

Gruß,
André