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
Mein Client
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
Gruß
Chris
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
Gruß
Chris
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 306870
Url: https://administrator.de/contentid/306870
Ausgedruckt am: 22.11.2024 um 00:11 Uhr
1 Kommentar