Problem bei UDP Kommunikation

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Problem bei UDP Kommunikation

    Hallo zusammen!
    Ich versuche seit Tagen mit einem Gerät zu kommunizieren bekomme es aber einfach nicht hin :(
    Im Wireshark sehe ich aber wie es brav antwortet, auch auf den richtigen Port auf dem ich lausche.
    Es antwortet immer auf die Ip & Port von der die Anfrage kam.

    Wenn ich mit einem anderen Programm (UDP TestTool) Daten an meines sende kommen diese ohne Probleme an.
    Habe 2 Methoden versucht. Vielleicht sieht wer gleich auf den ersten Blick wo mein Fehler liegt...

    Hier die erste:

    Quellcode

    1. Imports System.Net.Sockets
    2. Imports System.Text
    3. Imports System.IO
    4. Imports System.Net
    5. Imports System.Threading
    6. Public Class TestClass
    7. Public shared udpClient As New Socket(sockets.AddressFamily.InterNetwork,sockets.SocketType.Dgram,sockets.ProtocolType.Udp)
    8. Public shared EP As New IPEndPoint(IPAddress.Parse("192.168.23.10"),5555)
    9. public shared EEP As New IPEndPoint(IPAddress.Any,0)
    10. Public shared Sub Main()
    11. Dim ListenThread As Thread
    12. ListenThread = New Thread(AddressOf BeginListen)
    13. ListenThread.Start()
    14. End Sub
    15. Public shared Sub Send()
    16. Dim b() As Byte = Encoding.ASCII.GetBytes("!gai1#")
    17. Debug.WriteLine("Send to " & EP.Address.ToString & " [" & EP.Port.ToString & "] : " & Encoding.ASCII.getstring(b))
    18. udpClient.SendTo(b,EP)
    19. End Sub
    20. Public shared Sub BeginListen()
    21. Dim i As Integer = 0
    22. Dim Bytes(255) As Byte
    23. EEP.Address = IPAddress.parse("192.168.23.5")
    24. udpClient.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true)
    25. udpClient.Connect(EEP)
    26. Debug.WriteLine("EEP-Port = " & EEP.Port.ToString)
    27. Dim LPort As Integer = DirectCast(DirectCast(udpClient.LocalEndPoint, System.Net.EndPoint), System.Net.IPEndPoint).Port
    28. Debug.WriteLine("ProC Port = " & lport.ToString)
    29. While True
    30. i = udpClient.Receive(Bytes ,SocketFlags.None)
    31. Debug.WriteLine("NewIncomingData: " & Encoding.ASCII.GetString(Bytes))
    32. End While
    33. End Sub
    34. End Class


    und hier die 2.

    Quellcode

    1. Imports System
    2. Imports System.Text
    3. Imports System.Net
    4. Imports System.Net.Sockets
    5. Public Class MainClass
    6. Private Shared buf(40) As Byte
    7. Private Shared ar As IAsyncResult
    8. Private Shared Bytes As Integer
    9. Public shared sck As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
    10. Public Shared Sub Main()
    11. Dim LocalEP As New IPEndPoint(IPAddress.Parse("192.168.23.5"),0)
    12. sck.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true)
    13. sck.Connect(LocalEP)
    14. Dim LPort As Integer = DirectCast(DirectCast(sck.LocalEndPoint, System.Net.EndPoint), System.Net.IPEndPoint).Port
    15. Debug.Print("LPort = " & LPort.ToString)'Listen Port
    16. debug.WriteLine("Warte auf Daten...")
    17. ar = sck.BeginReceive(buf, 0, buf.Length, SocketFlags.None, New AsyncCallback(AddressOf ReceiveCallBack), sck)
    18. End Sub
    19. Public Shared Sub Send()
    20. Dim b() As Byte = Encoding.ASCII.GetBytes("!gai1#")
    21. Dim EP As New IPEndPoint(IPAddress.Parse("192.168.23.10"),5555) 'ADRESSE VOM PROC.
    22. Debug.WriteLine("Send to " & EP.Address.ToString & " [" & EP.Port.ToString & "] : " & Encoding.ASCII.getstring(b))
    23. sck.SendTo(b,EP)
    24. End Sub
    25. Private Shared Sub ReceiveCallBack(ByVal ar As IAsyncResult)
    26. Dim sck As Socket = CType(ar.AsyncState, Socket)
    27. Bytes = sck.EndReceive(ar)
    28. Dim msg As String = System.Text.Encoding.ASCII.GetString(buf, 0, Bytes)
    29. debug.WriteLine(msg)
    30. sck.BeginReceive(buf, 0, buf.Length, SocketFlags.None, New _
    31. AsyncCallback(AddressOf ReceiveCallBack), sck)
    32. End Sub
    33. End Class


    Würd mich freuen wenn mir da wer helfen kann.