Hi!
ich nutze c# und poste nun hier mal den relvanten Code:
Ok, das ist aber nur die halbe Wahrheit. Ich sehe, dass du mit IPAdress und IPEndPoint ein paar Verwaltungsstrukturen füllst. Das eigentlich interessante ist m.SendTo(), aber welcher Klasse m angehört, ist nicht zu sehen.....
Aha, nun lauscht dein Programm also doch an einem Port. Das kann es nicht, wenn es sich nicht an ihn bindet, was nur erfolgreich ist, wenn die Kombination aus Port- und IP-Adresse frei ist....
korrekt geraten hier m:
Socket m = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
m.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
EndPoint ipep = (EndPoint)(new IPEndPoint(IPAddress.Parse("{Lokale IP}"), 0));
m.Bind(ipep);
Beachte dass ich mittels SocketOption sage, dass ich den Header selbst mitgebe und dass der IPEndPoint zu EndPoint gecastet wird, welchese keine Eigenschaft "Port" mehr hat.
Anschließend benutze ich in eine while(true) Schleife die m.Receive()
Methode um die Daten in ein ByteArray zu stecken, welches dann als IPPacket pk
weiterverarbeitet wird.
Lauscht also nicht an einem Port sondern auf dem IP