Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi UDPServer lauscht auf Port - gleichzeitig aber andere Pakete auf Port mitschneiden (https://www.delphipraxis.net/168613-udpserver-lauscht-auf-port-gleichzeitig-aber-andere-pakete-auf-port-mitschneiden.html)

ChrisE 31. Mai 2012 09:46

UDPServer lauscht auf Port - gleichzeitig aber andere Pakete auf Port mitschneiden
 
Hallo,

Also, gegeben ist ein Indy TIdUDPServer. Dieser sendet an viele IP/Port-Kombinationen einen String. Jetzt kann es passieren, dass eine IP/Port-Kombination falsch ist - z.B. ein Rechner oder Router im Netz und nicht ein spezielles Gerät. Nun sehe ich in WireShark, dass bei einer solchen falschen Konfiguration ein ICMP Paket zurück kommt "Destination unrechable / Port unreachable". Das Ereignis OnIdException wird nur ausgelöst, wenn ich es mit dem lokalen Rechner selber versuche. Hierbei kommt der Fehler #10054 - Connection reset by Peer. Allerdings gibt es hier nur die Adresse 0.0.0.0 mit dem Serverport - also der eigene Server.

Zum Problem:
Der UDP-Server fühlt sich logischer weiße für das ICMP-Paket nicht verantwortlich. Ich brauche aber die Information / das Paket. Es wird an den Serverport des UDP-Servers geschickt.
Wie bekomme ich mit welchen Komponenten hin, dass ich alle anderen Pakete (nicht nur das ICMP-Paket) erhalte außer den UDP-Paketen, die an den Serverport gehen?

Ich hoffe ich habe mich geschickt genug ausgedrückt.

Danke für Eure Hilfe.

Gruß, Chris

shmia 31. Mai 2012 15:57

AW: UDPServer lauscht auf Port - gleichzeitig aber andere Pakete auf Port mitschneide
 
Grundsätzlich (by Design) ist es bei UDP so, dass der Absender nicht erfährt ob sein Datenpaket beim Empfänger angekommen ist.
Ein ICMP-Paket gibt es nicht immer; man kann sich also nicht darauf verlassen.

Wenn du wissen musst ob der Empfänger grundsätzlich in der Lage ist deine UDP Pakete zu empfangen, dann schicke doch ein spezielles Paket auf das der Empfänger antworten muss.

ChrisE 1. Jun 2012 07:50

AW: UDPServer lauscht auf Port - gleichzeitig aber andere Pakete auf Port mitschneide
 
Hallo,

erstmal danke für die Antwort :thumb:. Und es war mir klar, dass die Fragestellung in die falsche Richtung führt :-)

Ganz klar ist - UDP ein verbindungsloses Protokoll. Aber es gibt Situationen, bei dem trotzdem Informationen weiter gegeben werden - auch wenn Sie es nicht müssen.

Wie z.B. dass eine X beliebiger Netzwerk-Client (das kann ein PC oder Router im Netz sein), der versehentlich beim Server als Client Konfiguriert wurde, per ICMP antwortet, dass dieser Port nicht verfügbar ist.
Es geht nicht darum, dass dies jeder Netzwerkpartner tun muss - tut auch nicht jeder :-). Vielmehr darum, dass wenn sowas passiert, die Information auch verarbeitet werden sollte.
Und es geht genau um Clients, die eigentlich nicht angesprochen werden sollten - die also das "Protokoll" zwischen Server und Client nicht kennen können.

Also nochmals die Fragestellung:
Ich lausche mit einem UDP-Server (Indy) auf einen Port und führe über diesen auch die eigentliche Kommunikation mit den Clients.
Ich möchte jetzt aber auch andere Pakete außer diese UDP-Pakete auf diesem Port bekommen und verarbeiten können.

Was muss ich tun?

Gruß, Chris

shmia 1. Jun 2012 13:23

AW: UDPServer lauscht auf Port - gleichzeitig aber andere Pakete auf Port mitschneide
 
Dann wäre doch die Fragestellung:
Wie kann ich ICMP Destination Unreachable empfangen & auswerten, die Aufgrund eines nicht zugestellten UDP-Packets meine Netzwerkkarte erreichen?

Da ist die Informationlage schon ziemlich dünn.
Ich würde die KOmponente TIdIcmpClient verwenden und schauen was reinkommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz