Bilder senden

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von bigcompfan.

    Bilder senden

    Hallo Leute :D
    Ich habe 2 Programme. Eines bei mir und eines bei meinem Freund. Ich möchte gerne, dass mein Programm auf Buttondruck ein Screenshot macht und dieses ihm sendet. Bei ihm soll das Bild dann in einer Picture Box angezeigt werden. Ich weiss wie man einen Screenshot macht und diesen dann abspeichert. Außerdem habe ich es hingekriegt per P2P Text zu versenden. Also habe ich 2 Ansätze:

    1. Screenshot erstellen. Speichern. Datei senden. Empfangen
    2. Screenshot erstellen. In einen Text umcodieren (Text kann ich ja versenden ^^ ). Senden. Umcodieren

    Ich weiss allerdings nicht ob und wie das geht :|
    Also entweder muss ich wissen wie man Dateien senden kann (P2P) oder wie ich ein Bild in einen Text codiere.
    Das beste wäre natürlich den Screenshot senden zu können ohne es codieren oder abspeichern zu müssen :rolleyes:
    Wie muss ich das machen ? ?(
    Wie sendest du denn deinen Text? Ich gehe mal davon aus, dass du diesen in ein Byte-Array umwandelst und dieses dann verschickst. Das gleiche kannst du auch mit nem Bild machen: Bilddaten in Byte-Array umwandeln und dieses schicken.
    Danke Super Idee :D
    Nun funkt es irgendwie nicht :-/

    Sender:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Threading
    3. Imports System.IO
    4. Public Class Form1
    5. Dim Client As New TcpClient
    6. Private Sub Schreiben2()
    7. Try
    8. Client = New TcpClient(ip, 8002)
    9. Dim writer As New StreamWriter(Client.GetStream())
    10. writer.Write(Label4.Text)
    11. writer.Flush()
    12. Catch ex As Exception
    13. Console.WriteLine(ex)
    14. Dim errorresult As String = ex.Message
    15. Timer5.Stop()
    16. MessageBox.Show(errorresult & vbCrLf & vbCrLf & "Bitte alle Daten überprüfen", "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error)
    17. End Try
    18. End Sub
    19. Private Sub Timer5_Tick(sender As Object, e As EventArgs) Handles Timer5.Tick
    20. Dim desktopSize As Size
    21. desktopSize = System.Windows.Forms.SystemInformation.PrimaryMonitorSize
    22. Dim g As Graphics
    23. Dim img As Bitmap = New Bitmap(desktopSize.Width, desktopSize.Height)
    24. g = Graphics.FromImage(img)
    25. g.CopyFromScreen(0, 0, 0, 0, img.Size)
    26. Label4.Text = Image2ByteArray(img, System.Drawing.Imaging.ImageFormat.Bmp)
    27. Schreiben2()
    28. Timer5.Stop()
    29. End Sub
    30. Private Function UnicodeBytesToString(
    31. ByVal bytes() As Byte) As String
    32. Return System.Text.Encoding.Unicode.GetString(bytes)
    33. End Function
    34. Public Function Image2ByteArray(ByVal Bild As Image, ByVal Bildformat As System.Drawing.Imaging.ImageFormat) As String
    35. Dim MS As New IO.MemoryStream
    36. Bild.Save(MS, Bildformat)
    37. MS.Flush()
    38. Dim x As String
    39. x = UnicodeBytesToString(MS.ToArray)
    40. Return x
    41. End Function
    42. End Class


    Empfänger:

    VB.NET-Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Threading
    3. Imports System.IO
    4. Public Class Form1
    5. Dim Listener2 As New TcpListener(8002)
    6. Dim message2 As String = ""
    7. Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    8. Listener2.Stop()
    9. Application.Exit()
    10. End Sub
    11. Private Sub Listening()
    12. Listener2.Start()
    13. End Sub
    14. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    15. Listener2.Start()
    16. Dim ListenerThread As New Thread(New ThreadStart(AddressOf Listening))
    17. ListenerThread.Start()
    18. Label2.Text = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName).AddressList.GetValue(2).ToString + vbCrLf
    19. End Sub
    20. Private Sub Timer4_Tick(sender As Object, e As EventArgs) Handles Timer4.Tick
    21. If Listener2.Pending = True Then
    22. message2 = ""
    23. Client = Listener.AcceptTcpClient()
    24. Dim reader As New StreamReader(Client.GetStream())
    25. While reader.Peek > -1
    26. message2 = message2 + Convert.ToChar(reader.Read()).ToString
    27. End While
    28. Label6.Text = message2
    29. PictureBox1.BackgroundImage = UnicodeStringToBytes(Label6.Text)
    30. End If
    31. End Sub
    32. Private Function UnicodeStringToBytes(
    33. ByVal str As String) As Image
    34. Dim img As Image
    35. img = ByteArray2Image(System.Text.Encoding.Unicode.GetBytes(str))
    36. Return img
    37. End Function
    38. Public Function ByteArray2Image(ByVal ByAr() As Byte) As Image
    39. Dim img As Image
    40. Dim MS As New IO.MemoryStream(ByAr)
    41. Try
    42. img = Image.FromStream(MS)
    43. Catch ex As Exception
    44. Return Nothing
    45. End Try
    46. Return img
    47. End Function
    48. End Class


    Der Sender gibt einen Fehler aus und der Empfänger friert ein.
    Woran könnte es liegen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „bigcompfan“ ()