Ich versuche, ein Bild über lan mit UDP zu senden. Ich muss das Bild in kleine Pakete "schneiden" und am anderen Ende wieder zusammensetzen. Bisher habe ich den Server und fast den Client gemacht (der Server sendet das Bild). Ich habe einige Tests mit BeginReceive gemacht und gearbeitet (an anderen Projekten). Jetzt bekomme ich nichts auf den Client (kein Fehler ... nichts). Hier ist der Code für den Server:keine UDP-Pakete empfangen mit Asynchron-Methode VB.Net
Imports System
Imports System.IO
Imports System.Net
Imports System.Threading
Imports System.Net.Sockets
Imports System.Text.Encoding
Public Class Form1
Dim publisher As New Sockets.UdpClient(0)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sendbytes() As Byte = ASCII.GetBytes(txt1.Text)
Dim img As Image, img_stream As MemoryStream, buffer As Byte()
Dim packet_size As Integer = 1500, sent_size As Long
Try
publisher.Connect("localhost", 60000)
img_stream = imgToBytes(txt1.Text)
ReDim buffer(packet_size)
While Not img_stream.Position = img_stream.Length
sent_size += img_stream.Read(buffer, 0, packet_size)
publisher.Send(buffer, buffer.Length)
End While
Catch ex As Exception
Debug.Print(ex.Message)
End Try
End Sub
Function imgToBytes(ByVal file_name As String) As MemoryStream
Dim img As Image = Image.FromFile(file_name)
Dim stream As New MemoryStream
img.Save(stream, Drawing.Imaging.ImageFormat.Jpeg)
stream.Position = 0
Return stream
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Form2.Show()
End Sub
End Class
Der Kunde ist auf der zweiten Form:
Imports System
Imports System.IO
Imports System.Net
Imports System.Threading
Imports System.Net.Sockets
Imports System.Text.Encoding
Public Class Form2
Dim ep As IPEndPoint = New IPEndPoint(IPAddress.Any, 0)
Dim client As New UdpClient(1000)
Public Event new_msg(ByVal msg As Byte())
Public Sub client_msg(ByVal msg As Byte())
Debug.Print("a")
End Sub
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try ''don't know why I put this here
client.BeginReceive(New AsyncCallback(AddressOf receive), client)
Catch ex As Exception
Debug.Print(ex.Message)
End Try
End Sub
Sub receive(ByVal ar As IAsyncResult)
Dim buffer As Byte()
Debug.Print("b")
Try
buffer = client.EndReceive(ar, ep)
''RaiseEvent new_msg(buffer)
client.BeginReceive(New AsyncCallback(AddressOf receive), client)
Catch ex As Exception
Debug.Print(ex.Message)
End Try
End Sub
End Class
Wo liegt das Problem?
Haben Sie trat durch Ihren Code mit Breakpoints? –
Nein ... ich glaube nicht, dass ich etwas bekommen werde..Ich gebe Drucke überall ... nichts –
Über Haltepunkte können Sie bekommen, wo Ihre Anwendung die Ausführung von Code beendet. Ich versuche gerade deinen Code. Obwohl ich nicht anders kann, als zu bemerken, dass Sie nichts mit den Daten tun, die Sie erhalten, also was ist wirklich das Problem? –