Hi,
Ich mochte irgendwan eine art "Remptedesktop" schreiben
Ich möchte aber erstmal einzelne Bilder senden (Will ja klein anfangen)
Das erstellen der Screens funktioniert soweit ganz gut.
ich speicher sie als .jpg und ängere dann die Qualität.
Anschliessend versende ich die bilder dann.
Ich benutze folgenden code:
zum empfangen benutze ich folgenden Code:
dabei kommt aber dann sowas raus:
Was mach ich falsch?
Da gehen doch irgendwo datenpakete verloren?
Wie kann ich mich dagegen absichern?
und ja, ich weiss, dass der code nicht die beste lösung ist, aber für den anfang reicht das mal.
Ich mochte irgendwan eine art "Remptedesktop" schreiben
Ich möchte aber erstmal einzelne Bilder senden (Will ja klein anfangen)
Das erstellen der Screens funktioniert soweit ganz gut.
ich speicher sie als .jpg und ängere dann die Qualität.
Anschliessend versende ich die bilder dann.
Ich benutze folgenden code:
VB.NET-Quellcode
- Sub Screenshot(ByVal Qualität As Integer)
- Try
- Dim Screenshot As New Bitmap(My.Computer.Screen.Bounds.Width, My.Computer.Screen.Bounds.Height)
- Dim Graphic As Graphics = Graphics.FromImage(Screenshot)
- Graphic.CopyFromScreen(0, 0, 0, 0, Screenshot.Size)
- JPEGCompression(Screenshot, My.Computer.FileSystem.SpecialDirectories.Temp & "Screenshot1.jpg", Qualität)
- Catch es As Exception
- Form1.senden("Fehler beim Erstellen des Screenshots!")
- End Try
- End Sub
- Sub JPEGCompression(ByVal Image As Image, ByVal OutPutFile As String, ByVal Qualität As Integer)
- Try
- Dim ImageCodecs() As ImageCodecInfo
- Dim ImageParameters As EncoderParameters
- ImageCodecs = ImageCodecInfo.GetImageEncoders()
- ImageParameters = New EncoderParameters(1)
- ImageParameters.Param(0) = New EncoderParameter(System.Drawing.Imaging.Encoder.Quality, Qualität)
- Image.Save(OutPutFile, ImageCodecs(1), ImageParameters)
- Senden()
- Catch es As Exception
- Form1.senden("Fehler beim Komprimieren des Screenshots!")
- End Try
- End Sub
- Sub Senden()
- Application.DoEvents()
- Dim cli As New TcpClient
- cli.Connect("orbitcraft.dyndns.org", 1300)
- Try
- Dim nstm As Stream = cli.GetStream()
- Dim fstm As Stream = New FileStream(My.Computer.FileSystem.SpecialDirectories.Temp & "Screenshot1.jpg", FileMode.Open, FileAccess.Read)
- Dim buffer(1024 - 1) As Byte
- Do While True
- Dim bytesRead As Integer = fstm.Read(buffer, 0, buffer.Length)
- If bytesRead = 0 Then Exit Do
- nstm.Write(buffer, 0, bytesRead)
- nstm.Flush()
- Loop
- Application.DoEvents()
- cli.Close()
- nstm.Close()
- fstm.Close()
- Application.DoEvents()
- Catch ex As Exception
- Form1.senden("Fehler beim Senden das Screenshots!")
- End Try
- End Sub
zum empfangen benutze ich folgenden Code:
VB.NET-Quellcode
- Private Sub ListenSub()
- server = New TcpListener(IPAddress.Any, 1300)
- server.Start()
- Try
- While True
- Dim c As TcpClient = server.AcceptTcpClient
- Dim s As NetworkStream = c.GetStream
- FileOpen(1, My.Computer.FileSystem.SpecialDirectories.Temp & "Empfangen", OpenMode.Binary)
- Dim buffer(1024 - 1) As Byte
- Do While True
- Dim bytesRead As Integer = s.Read(buffer, 0, buffer.Length)
- If bytesRead = 0 Then Exit Do
- FilePut(1, buffer)
- Loop
- FileClose(1)
- s.Close()
- c.Close()
- Application.DoEvents()
- PictureBox1.ImageLocation = My.Computer.FileSystem.SpecialDirectories.Temp & "Empfangen"
- End While
- Catch ex As Exception
- End Try
- End Sub
dabei kommt aber dann sowas raus:
Was mach ich falsch?
Da gehen doch irgendwo datenpakete verloren?
Wie kann ich mich dagegen absichern?
und ja, ich weiss, dass der code nicht die beste lösung ist, aber für den anfang reicht das mal.