AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Listbox Inhalt von Server zum clienten schicken???
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox Inhalt von Server zum clienten schicken???

Offene Frage von "htxmlx"
Ein Thema von htxmlx · begonnen am 11. Sep 2008 · letzter Beitrag vom 14. Sep 2008
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#31

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 16:28
In Deinem Delphi-Verzeichnis sollte es einen Ordner "Demos" geben. Da sind manche Schätzchen drin.
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
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#32

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 16:29
KK da guck ich mal nach...

Gruß, htxmlx
  Mit Zitat antworten Zitat
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#33

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 17:49
Habs gefunden und mir angesehen und versucht nachzuvollziehen, aber da dort keine Kommentare oder sonstiges stehen hab ichs i-wie net verstanden, könntest du so freundlich sein und mir in ein zwei sätzen nochmal erläutern was genau ein thread ist und was er bewirkt, also anwendungsweise...das wäre nett.

Gruß, htxmlx
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#34

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 17:53
Ein Thread ist eine Art "Kindprozess", den Du quasi vom Hauptprogramm abspalten kannst (z.B. das Drucken im Hintergrund, während der Hauptthread bereits weiterarbeitet).
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
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#35

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 17:55
ok thx, aber wie sollte ich das hier anwenden, also was würde das hier bringen um den nachrichten stau zu verhindern?

Gruß, htxmlx
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#36

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 18:03
Na gut, gehen wir mal weg von den Threads. Ich habe es nicht mehr im Kopf, aber konnte man bei den Socket-Komponenten nicht irgendwie die Gegenstelle abfragen? Dann wäre es doch recht einfach zu schauen, ob man von der Gegenstelle bereits einen Eintrag hat. Ansonsten poste doch mal den Code zum Bestücken der Listbox.
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
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#37

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 18:24
Ich poste einfach mal den Code also wenn ein user drauf geht oder runter geht passiert folgendes
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
var
i: Integer;
Text: String;
begin
Clients.Items.Clear;
For I := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
with ServerSocket1.Socket.Connections [I] do
if (Connected) then SendText('#55');
end;
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
  var test: Integer;
begin
Clients.Items.Clear;
For test := 0 to ServerSocket1.Socket.ActiveConnections - 1 do
begin
with ServerSocket1.Socket.Connections [test] do
if (Connected) then SendText('#55');
end;
end;
Erläuterung, also wenn einer runter geht oder drauf geht dann wird die listbox(namens clients) gelöscht und an alle clienten die message '#55' gesendet.
Empfängt ein client diese message wird bei diesem ebenfalls die lsitbox gelöcht und eine message mit
'#99'+Nickname an den server gesendet...
der server empfängt '#99' und weiss das es sich um einen nickname handelt also füft er diesen bei sich in der listbox ein und sendet die nachricht mit '#99'+nickname an alle clienten..
alle clienten empfangen also die messages mit dem '#99' und fügen diese somit auch bei sich in die listbox ein

eigentich ganz simpel, es funktioniert ja auch alles bis auf das problem, dass alle clienten bei mir im test 4 zur gleichen zeit ihre '#99'nickname messages senden..

beim clienten sieht das dann so aus
Delphi-Quellcode:
procedure TForm1.OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
var Text:string;
begin
Text:=Socket.ReceiveText;
Form1.Show;
if (Length(Text) > 2) and (Copy(Text,1,3) = '#77') then
Memo1.Lines.Add(Text);
if (Length(Text) > 2) and (Copy(Text,1,3) = '#99') then
Listbox1.AddItem(Text,Socket);
if (Length(Text) > 2) and (Copy(Text,1,3) = '#55') then
Listbox1.Items.Clear;
if (Length(Text) > 2) and (Copy(Text,1,3) = '#55') then
ClientSocket1.Socket.SendText('#99' + NickName);
end;
die codes: #77 - eine normale chat message
#99 - ein nickname
#55 - befehl zum online liste aktualisiern


ich hoffe du kannst dich da eindeken und verstehst das

Gruß, htxmlx
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#38

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 18:40
Wäre es nicht besser, sich eine Klasse zu erstellen, in der man sich die Remote-Adresse samt des entsprechenden Nicknamen merkt und diese in die Listbox einfügt? Wenn sich jemand abmeldet, kannst Du ihn dann eindeutig identifizieren und nur dessen Eintrag aus der Listbox löschen. Erscheint mir sinnvoller, als jedesmal die komplette Liste neu aufzubauen.
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
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#39

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 18:51
Hat aber einen Nachteil da man seine IP doch relativ einfach ändern kann...gibt es nicht ne lösung wie man das nachrichten senden der einzelnen clienten vielleicht untereinandern verzögern könnte?

Gruß, htxmlx
  Mit Zitat antworten Zitat
htxmlx

Registriert seit: 23. Aug 2008
124 Beiträge
 
Delphi 7 Enterprise
 
#40

Re: Listbox Inhalt von Server zum clienten schicken???

  Alt 12. Sep 2008, 19:42
ich bräuchte theoretisch einen delay der zwischen dem empfangen der '#55' message und dem senden des nicknames steht...dieser müsste sich aber pro client um 100ms erhöhen oder so...? ginge sowas?

Gruß, htxmlx
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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 06:31 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