Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Indy 10 UDP Server (https://www.delphipraxis.net/161897-indy-10-udp-server.html)

hanspeter 26. Jul 2011 14:48

Indy 10 UDP Server
 
Hallo,

ich versuche mit Indy eine UDP Lösung zwischen 2 oder mehr PC zu realisieren.
Dabei habe ich einen eigenartigen Effekt. Vielleicht hat wer einen Tip.

Das Programm hat einen UDP Server und einen UDP Client. Beide haben unterschiedliche Portnummern.
Die Kommunikation läuft so ab, das der Server ein Datenpacket empfängt und den korrekten Empfang über den Client quitiert.

Das Problem ist, das das ganze manchmal nicht funktioniert.

An der Programmstelle Stelle UDPServer.active = true mache ich einen Debuggerstop.
Schaue ich mir die Parameter an, dann ist Defaultport richtig gesetzt.
Tief unten ist noch ein protected Property Port. (In TIdUDPBase)
Setze ich diesen Port auf Defaultport dann funktioniert die Übertragung.
Auch bei mehrmaligen Programmstart funktioniert die Übertragung ohne Eingriff.
Erst nach Rechnerneustart bekomme ich wieder Probleme.
Kann es sein das sich eine Client- und eine Servercomponente auf dem gleichen Formular nicht vertragen?
Für einen tip dankbar.

Gruß Peter

blackfin 26. Jul 2011 15:44

AW: Indy 10 UDP Server
 
Zitat:

Das Problem ist, das das ganze manchmal nicht funktioniert.
Kann es sein, dass es einfach an UDP liegt, dass manchmal etwas nicht ankommt? :-)
UDP ist per Definition kein Protokoll, bei dem alle Daten immer ankommen, sondern man muss damit rechnen, dass es eben mal nicht ankommt :-)
Wenn du sicherstellen willst, dass immer alles ankommt, nimm TCP, dafür ist es, mit seinem grösseren Overhead, auch da.

Oder habe ich es falsch verstanden und es geht in deinem Programm nach einem Neustart nie, bis du etwas am Code änderst?

hanspeter 26. Jul 2011 15:53

AW: Indy 10 UDP Server
 
Es geht nach Neustart nie, bis ich mit dem Debugger eingreife.
Nicht ankommen trifft in meinem Fall nicht zu.
Der Client sendet ein Datenpaket und erwartet eine Quittung. Kommt die Quittung innerhalb der Timeoutzeit nicht,
wird die Übertragung abgebrochen und das Paket erneut gesendet. Solange bis der Server quitiert.

Der Server ist ein zu diesem Zweck abgestellter Einzweckrechner, der nur Daten einsammelt und in einer Datenbank ablegt.

Gruß
Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 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