Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner ausfä (https://www.delphipraxis.net/69951-udp-protokolle-laufen-nicht-mehr-ein-wenn-ein-rechner-ausfae.html)

torud 22. Mai 2006 20:11


UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner ausfä
 
Hallo Wissende,

ich habe folgendes Problem.

In einem lokalen Netzwerk von 12 oder mehr Rechnern gibt es einen SQL-Server, der bei Änderungen XML-Strings verteilt, welche die Clients per UDP erhalten und in ihrer Anzeige (TWebbrowser) aktualisieren. Das Ganze funktioniert ganz gut.

Das Problem besteht darin, dass es vorkommt, dass ein oder mehrere Rechner auf einmal keine Protokolle mehr verarbeiten, weil scheinbar die UDP-Komponente inaktiv ist. Ich habe folgendes eingestellt. Port ist 8091 und HOST 255.255.255.255. Die Property Activ steht schon bei Start auf True. Ich vermute, dass es auch zu Problemen kommt, wenn das Programm gestartet wird und Protokolle einlaufen.

Scheinbar ist das Problem so gravierend, dass davon auch andere Rechner betroffen sind, die bis zu diesem Zeitpunkt keine Probleme hatten.

Wenn das der Fall ist, kommt es vor, dass dann gleich mehrere Rechner das Protokoll nicht mehr verarbeiten. Ich habe an meiner Hauptverwaltungsapplikation auch einen Button eingerichtet, der einen String per UDP sendet, welcher die Clients dazu auffordert selbst eine Nachricht per UDP zu senden und der Hauptapplikation ihren Rechnernamen mitzuteilen. Nach dem Ausfall eines Clients waren von vormals 12 Clients nur noch 3 in der Lage ihren Namen zu senden. Die Clients senden auf dem Port 8090, also einem eigenen Port.

Nun meine Fragen.
Wie kann ich dieses Problem umgehen/lösen?
Macht es Sinn Active := True erst bei OnShow der Applikation zu setzen?
Kann es sein, dass ein Rechner gleich mehrere Rechner mit "runter reisst"?
Gibt es Ports, die besonders "stabil" sind?
Was kann sonst noch die Ursache für das hier vorliegende Problem sein?

torud 23. Mai 2006 14:55

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Also da ich noch keine Antwort erhalten habe, werde ich mal schildern, was ich nun getan habe, um das Problem einzugrenzen und zu minimieren.

Der UDPServer wird erst 3 Sekunden nach dem OnShow des Hauptformulares Active:=True gesetzt. Damit will ich erreichen oder sicherstellen, dass einlaufende Protokolle die UDP-Komponente nicht direkt beim Start "deaktiviert".

Heute war also wieder ein grosser Livetest und 9 Clients liefen ca. 2 Stunden stabil und haben die verarbeiteten Daten ordentlich verarbeitet. Leider stieg dann irgendwann der erste Client aus, erhält also keine Daten mehr. Und direkt danach stieg der nächste aus. Zur Zeit sind nach 3 Stunden nur 7 da.

Wie würdet Ihr das lösen?

Soll ich vielleicht nen Timer einbauen, der 1 mal pro Minute den Aktivitätszustand prüft und notfalls die Komponente wieder aktiviert? Aber auf der anderen Seite muss es ja einen Grund haben, dass die Dinger immer wieder mal gern offline gehen.

Wird die Komponente vielleicht deaktiviert, wenn der DatenString zu gross ist, oder wird das nur der Überschuss abgeschnitten??

Ich würde mich über hilfreiche Kommentare freuen...

inherited 23. Mai 2006 15:00

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Hi,
Wenn das keine Ultraschnellen Verbindungen sein sollen, würd ich das ganze noch einmal mit TCP neu auflegen/ändern.
Bei TCP wird sichergestellt das Pakete auch ankommen.
Zudem solltest du das nicht mit OnSHow lösen, da dieses beim Programmstart u.U. mehrmals ausgefürt wird.

So far,
inh3r1ted

torud 23. Mai 2006 15:06

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Das Problem ist, dass ich hier vor Ort nicht mehr kurzfristig auf TCP umstellen kann...

inherited 23. Mai 2006 15:13

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Des is blöd.
Ich würde erstmal sichergehen das sie überhaup non-active sind, indem du mit einem timer dies überprüfst.
Nimmst du Indy-UDP oder die Sockets? Wenn Indy, welche Version, 9 oder 10

torud 23. Mai 2006 15:27

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Danke für Deine Antwort.

Ja, ich nehme die UDPClient und UDPServer von Indy. Wenn es läuft ist wirklich alles prima und falls mal EIN Protokoll nicht ankommt, ist das nicht so wild, aber das die Dinger gar nichts mehr machen, ist unschön. Ich werde auf jeden fall mal einen Timer den Zustand überprüfen lassen und schreibe mir mal bei OnClose den Zusatand in eine Ini, um sehen zu können, ob es wirklich daran liegt.

Noch einen Vorschlag?

Ich habe auch die Freeze von Indy mit drauf, weiss aber nicht genau, was die eigentlich tun soll....

inherited 23. Mai 2006 15:30

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Du meinst Anti-Freeze ;)
Schau mal in die Hilfe, da stehts.
Ich würde auch noch überprüfen wie weit/unweit die pakete kommen.

torud 23. Mai 2006 15:32

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Zitat:

Zitat von inherited
Du meinst Anti-Freeze ;)
Schau mal in die Hilfe, da stehts.
Ich würde auch noch überprüfen wie weit/unweit die pakete kommen.

Werde ich tun. Aber wie meinst Du das mit dem wie weit sie kommen???

inherited 23. Mai 2006 15:43

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Ob sie tatsächlich verschickt werden, dann ob sie esbis zum anderen pc schaffen nur möglicherweise vom udp ignoriert da er vllt non-active ist

torud 23. Mai 2006 15:53

Re: UDP-Protokolle laufen nicht mehr ein, wenn ein Rechner a
 
Naja ich habe ja an meinem Verwealtungstool einen Client und einen Server und mit dem Client sende ich die Daten. Ich kann auch nen String schicken, der den Empfänger dazu zwingt dem Verwaltungstool einen String mit seinem PCNamen zu senden. Die empfengenen Namen trage ich dann in eine Listbox ein. Dadurch weiss ich, welcher Rechner noch per UDP kommuniziert und welcher nicht. Meinstest Du das vielleicht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.
Seite 1 von 3  1 23      

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