Hallo,
dies ist mein erster Beitrag in diesem Forum also ersteinmal ein freudiges HALLO an alle.
Hänge schon seit Tagen an folgendem Problem.
Benötige für mein Flugsimulator Cockpit ein Progrämmchen, welches einen Screenshot von einem Rechner auf einen zweiten im Netzwerk schickt und dort anzeigt.
Also mach ich nen screenshot mit CopyFromScreen und schmeiß ihn in ne picture box. Dann lese ich dies in einen memory stream. Das kann ich auch in einer zweiten PictureBox wieder anzeigen. Also die konvertierung scheint zu funktionieren.
Aber sobald ich den stream über das netzwerk schicke, bekomme ich auf der Empfangsseite einen
System.ArgumentException arameter is not valid Fehler bei der FromStream umwandlung.
Hier mal der Sender Code:
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Public Class Form1
Dim b As New Bitmap(300, 300)
Dim dataSend() As Byte
Dim myUdpClient As UdpClient = New UdpClient("127.0.0.1", 12345)
Dim mybyte(36000) As Byte
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) _
Handles Timer1.Tick
Using g As Graphics = Graphics.FromImage(b)
g.CopyFromScreen(1, 1, 0, 0, New Size(300, 300))
End Using
PictureBox1.Image = b
Dim ms As New IO.MemoryStream
PictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim bytes() As Byte = ms.ToArray()
ReDim dataSend(ms.Length)
ms.Read(dataSend, 0, ms.Length)
myUdpClient.Send(dataSend, dataSend.Length)
'MessageBox.Show("eingelesen")
ms.Write(mybyte, 0, mybyte.Length)
PictureBox2.Image = Image.FromStream(ms)
ms.Close()
End Sub und der Empfänger-Code:
Imports System.Net.Sockets
Imports System.Text
Imports System.IO
Imports System.Net
Public Class Form1
Dim b As New Bitmap(300, 300)
Dim tmythread As New System.Threading.Thread(AddressOf mythread)
Dim bteDataAccept() As Byte
Dim strdataAccept As String = ""
Dim myEndPoint As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 12345)
Dim myByte(36000) As Byte
Dim myUdpClient As UdpClient = New UdpClient(12345)
Dim ms As New IO.MemoryStream
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
Handles MyBase.Load
tmythread.Start()
End Sub
Sub mythread()
Try
myByte = myUdpClient.Receive(Nothing)
ms.Write(myByte, 0, myByte.Length)
MessageBox.Show(myByte.Length.ToString)
PictureBox1.Image = System.Drawing.Image.FromStream(ms)
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
End Class Wäre Super, wenn mir jemand einen Tip geben könnte.
Grüße
Stef |