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:
und hier die 2.
Würd mich freuen wenn mir da wer helfen kann.
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
- Imports System.Net.Sockets
- Imports System.Text
- Imports System.IO
- Imports System.Net
- Imports System.Threading
- Public Class TestClass
- Public shared udpClient As New Socket(sockets.AddressFamily.InterNetwork,sockets.SocketType.Dgram,sockets.ProtocolType.Udp)
- Public shared EP As New IPEndPoint(IPAddress.Parse("192.168.23.10"),5555)
- public shared EEP As New IPEndPoint(IPAddress.Any,0)
- Public shared Sub Main()
- Dim ListenThread As Thread
- ListenThread = New Thread(AddressOf BeginListen)
- ListenThread.Start()
- End Sub
- Public shared Sub Send()
- Dim b() As Byte = Encoding.ASCII.GetBytes("!gai1#")
- Debug.WriteLine("Send to " & EP.Address.ToString & " [" & EP.Port.ToString & "] : " & Encoding.ASCII.getstring(b))
- udpClient.SendTo(b,EP)
- End Sub
- Public shared Sub BeginListen()
- Dim i As Integer = 0
- Dim Bytes(255) As Byte
- EEP.Address = IPAddress.parse("192.168.23.5")
- udpClient.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true)
- udpClient.Connect(EEP)
- Debug.WriteLine("EEP-Port = " & EEP.Port.ToString)
- Dim LPort As Integer = DirectCast(DirectCast(udpClient.LocalEndPoint, System.Net.EndPoint), System.Net.IPEndPoint).Port
- Debug.WriteLine("ProC Port = " & lport.ToString)
- While True
- i = udpClient.Receive(Bytes ,SocketFlags.None)
- Debug.WriteLine("NewIncomingData: " & Encoding.ASCII.GetString(Bytes))
- End While
- End Sub
- End Class
und hier die 2.
Quellcode
- Imports System
- Imports System.Text
- Imports System.Net
- Imports System.Net.Sockets
- Public Class MainClass
- Private Shared buf(40) As Byte
- Private Shared ar As IAsyncResult
- Private Shared Bytes As Integer
- Public shared sck As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)
- Public Shared Sub Main()
- Dim LocalEP As New IPEndPoint(IPAddress.Parse("192.168.23.5"),0)
- sck.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true)
- sck.Connect(LocalEP)
- Dim LPort As Integer = DirectCast(DirectCast(sck.LocalEndPoint, System.Net.EndPoint), System.Net.IPEndPoint).Port
- Debug.Print("LPort = " & LPort.ToString)'Listen Port
- debug.WriteLine("Warte auf Daten...")
- ar = sck.BeginReceive(buf, 0, buf.Length, SocketFlags.None, New AsyncCallback(AddressOf ReceiveCallBack), sck)
- End Sub
- Public Shared Sub Send()
- Dim b() As Byte = Encoding.ASCII.GetBytes("!gai1#")
- Dim EP As New IPEndPoint(IPAddress.Parse("192.168.23.10"),5555) 'ADRESSE VOM PROC.
- Debug.WriteLine("Send to " & EP.Address.ToString & " [" & EP.Port.ToString & "] : " & Encoding.ASCII.getstring(b))
- sck.SendTo(b,EP)
- End Sub
- Private Shared Sub ReceiveCallBack(ByVal ar As IAsyncResult)
- Dim sck As Socket = CType(ar.AsyncState, Socket)
- Bytes = sck.EndReceive(ar)
- Dim msg As String = System.Text.Encoding.ASCII.GetString(buf, 0, Bytes)
- debug.WriteLine(msg)
- sck.BeginReceive(buf, 0, buf.Length, SocketFlags.None, New _
- AsyncCallback(AddressOf ReceiveCallBack), sck)
- End Sub
- End Class
Würd mich freuen wenn mir da wer helfen kann.