AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy 10 UDP Aktualisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Indy 10 UDP Aktualisieren

Ein Thema von STS301 · begonnen am 10. Jun 2008 · letzter Beitrag vom 21. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#1

Indy 10 UDP Aktualisieren

  Alt 10. Jun 2008, 15:27
Hi

wie kann ich die UDPServerRead Prozedure per befehl (zb. Button) ausführen.
Mein problem:

Zwei Rechner, R1 startet das Programm, R2 auch. R1 sieht R2, aber nicht umgekehrt.
Und wenn ich R2 schließe, dann wirft R1 den R2 nicht aus der Liste.

Hier der Code:

Delphi-Quellcode:
procedure TForm1.userverUDPRead(Sender: TObject; AData: TBytes;
  ABinding: TIdSocketHandle);
var
 k: integer;
 RecText: String;
 MyList: TListItem;
begin
  RecText := '';
    for k:= 0 to length(AData)-1 do
     begin
      RecText := RecText + chr(AData[k]);
     end;
  MyList:= Namen.Items.Add;
  MyList.caption:= RecText;
  MyList.Subitems.Add(ABinding.PeerIP);
end;
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#2

Re: Indy 10 UDP Aktualisieren

  Alt 11. Jun 2008, 16:46
Keiner eine Idee?

Vielleicht habe ich es zu kompliziert erklährt.

Ich will die Prozedur manuel aufrufen (zb. Mit einem Button), damit ich immer sehen kann wer online ist.

Oder gibt es da eine bessere Möglichkeit?
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#3

Re: Indy 10 UDP Aktualisieren

  Alt 13. Jun 2008, 08:57
habe es jetzt glaube ich geschafft (noch nicht ausprobiert)
IdUDPServer1.OnUDPRead wenn es nicht klappen sollte melde ich mich wieder
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#4

Re: Indy 10 UDP Aktualisieren

  Alt 17. Jun 2008, 10:02
hi

Wenn ich das
userver.OnUDPRead; starten will, dann sagt er:
Nicht genügend wirkliche Parameter!"

wie kann ich das lösen

Hilfe!
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Indy 10 UDP Aktualisieren

  Alt 17. Jun 2008, 10:11
TUDPReadEvent = procedure (Sender: TObject; AData: TIdBytes; ABinding: TIdSocketHandle) of object; So schaut die entsprechende Signatur aus. Wenn du die Methode also manuell aufrufen möchtest, musst du entsprechende Werte für Sender, aData und aBinding übergeben.

Allerdings wüsste ich jetzt nicht, warum du ein Lese-Event auslösen möchtest, wenn gar keine Daten gekommen sind.

UDP ist ein verbindungsloses Protokoll, d.h. du hast keine Chance mitzubekommen ob ein Client noch online ist oder nicht. Die einzige Möglichkeit wäre ein Keep-Alive. Der Client müsste alle x Sekunden eine Nachricht senden. Hat dein Server von einem Client mehr als x+y Sekunden nichts empfangen ist dieser Client wohl nicht mehr online.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Indy 10 UDP Aktualisieren

  Alt 17. Jun 2008, 10:13
Bist Du Dir sicher, dass das Sinn macht? Ansonsten musst Du das "On" weglassen und die Parameter mit dem richtigen Typ übergeben.

[edit] Zu spät [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Indy 10 UDP Aktualisieren

  Alt 17. Jun 2008, 10:15
Hai STS301,

ich würde anders an das Problem herangehen.

Dein Programm sendet beim Start ein UDP-Paket um sich bei anderen zu melden.

Damit jetzt auch die "Versionen" die später gestartet wurden alle anderen kennen gibt es zwei möglichkeiten.

a) Über einen Timer meldet sich jede Version alle X Sekunden
b) Sobald das Programm gestartet wurde meldet es sich. Wenn diese Meldung dann auf einem anderen PC von dem Programm empfangen wurde antwortet es mit seiner eigenen Kennung.

Frei nach dem Motto:

Hallo ich bin da. Wer noch?
Stephan B.
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#8

Re: Indy 10 UDP Aktualisieren

  Alt 17. Jun 2008, 10:21
danke für die tipps.

da wird wohl die beste und einfachste Methode sein, dass sie X jede Y Sekunde meldet.

in welchem Event soll ich es einfügen, dass es sich alle Y Sekunden melden soll.
Derweil ist es im OnCreate aber sonst On Show oder wo?
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Indy 10 UDP Aktualisieren

  Alt 17. Jun 2008, 10:26
Du erstellst einen Timer mit einem entsprechenden Intervall. Immer wenn du etwas schickst setzt du vorher den Timer auf Enabled = False und nach dem Schicken auf Enabled = true. So kannst du verhindern, dass ein Keep-Alive gesendet wird, obwohl Nutzdaten übertragen werden.
  Mit Zitat antworten Zitat
Benutzerbild von STS301
STS301

Registriert seit: 6. Nov 2007
668 Beiträge
 
Delphi 7 Personal
 
#10

Re: Indy 10 UDP Aktualisieren

  Alt 17. Jun 2008, 10:29
danke euch Ich schreibe es in den OnTimer Event rein
Sebastian

ölpölp

Linux will rule the universe!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 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