AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Server UserListe abfragen

Ein Thema von Frage95 · begonnen am 15. Nov 2013 · letzter Beitrag vom 17. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.395 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 09:21
Beeindruckende Glaskugel, Lemmy, roll mal rüber, dann kann ich auch was drin sehen.
was zahlst Du? Außerdem funktioniert die immer nur am Freitag, den 13.
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 09:25
Beeindruckende Glaskugel, Lemmy, roll mal rüber, dann kann ich auch was drin sehen.
was zahlst Du? Außerdem funktioniert die immer nur am Freitag, den 13.
Ich geb meine schwarze Katze in Zahlung, die läuft auch garantiert auf jedem Server.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Frage95
(Gast)

n/a Beiträge
 
#3

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 09:32
ok dann versuche ich mal etwas ausführlicher zu werden

Delphi-Quellcode:
uses MainformU;

procedure server;
begin
     frmServer.Port.Text := '55555';
     frmServer.Server.Port := strtoint (frmServer.Port.Text);
     frmServer.Server.Active := True;


end;

procedure TfrmServer.FormCreate(Sender: TObject);
begin
Port.Text := '55555';
end;

procedure TfrmServer.FormDestroy(Sender: TObject);
begin
Server.Active := False;
end;

procedure TfrmServer.ServerClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' verbunden.');
Userzahl:=Userzahl +1;
User.Caption:='User: ' + IntToStr(Userzahl);

end;

procedure TfrmServer.ServerClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' getrennt.');
Userzahl:=Userzahl -1;
User.Caption:='User: ' + IntToStr(Userzahl);

end;

procedure TfrmServer.ServerClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + 'hat den Fehler: ' + inttostr(Errorcode));
Userzahl:=Userzahl -1;
User.Caption:='User: ' + IntToStr(Userzahl);
end;

procedure TfrmServer.ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
var i:integer;
Nachricht:AnsiString;
begin
Nachricht:=Socket.RemoteAddress + ': ' + Socket.ReceiveText;
Memo1.Lines.Add(Nachricht);

for i := 0 to Server.Socket.ActiveConnections -1 do
  Server.Socket.Connections[i].SendText(Nachricht);

end;

procedure TfrmServer.BtnAnhaltenClick(Sender: TObject);
begin
Server.Port := strtoint (Port.Text);
Server.Active := False;

BtnStarten.Enabled := True;
BtnAnhalten.Enabled := False;

Memo1.Lines.Add('Status: Server angehalten.');
end;

procedure TfrmServer.BtnClearClick(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('Server 1.0');
end;

procedure TfrmServer.BtnSendenClick(Sender: TObject);
var i:Integer;
begin
for i := 0 to Server.Socket.ActiveConnections -1 do
   Server.Socket.Connections[i].SendText('Nachricht vom Server: ' + EdSenden.Text);
  Memo1.Lines.Add('Nachricht vom Server: ' + EdSenden.Text);
end;

procedure TfrmServer.BtnStartenClick(Sender: TObject);
begin
Server.Port := strtoint (Port.Text);
Server.Active := True;

BtnStarten.Enabled := False;
BtnAnhalten.Enabled := True;

Memo1.Lines.Add('Status: Server gestartet.');
end;

end.
Das ist mein Server.

Dann habe ich eine Unit MainForm, in dieser Mainform befindet sich ein EditFeld, in diesem EditFeld können die Benutzer Ihren Nickname eingeben.
Nun möchte ich, wenn sich z.B. 20 Leute "einloggen" dass bei jedem diese 20 Namen in der ListBox, die sich auch auf dieser MainForm befindet angezeigt wird.

Nun möchte ich nur noch die ServerListe abfragen und diese dann in der ListBox speichern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 10:20
Also wenn das Dein Server ist, dann fehlt ihm zumindestens eine rudimentäre Benutzerverwaltung, sprich eine "ActiveUserList".
Sobald diese vorhanden ist, und natürlich gefüllt, kannst Du diese dann an die Clients schicken.
(daß da ein paar Variablendefinitionen fehlen, und das eine oder andere ein wenig obskur ist, lassen wir mal unter den Tisch fallen)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 10:21
Wie ist denn folgender Ansatz: sobald sich ein neuer Client an- oder abmeldet, sendet der Server ein definiertes Kommando an die verbundenen Clients, welche dann ihre Userliste aktualisieren?
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
Frage95
(Gast)

n/a Beiträge
 
#6

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 10:28
Okay der Ansatz hört sich ja gut an und wie mache ich das?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 10:33
Na so, wie ich geschrieben habe. Die Ereignisse An- und Abmeldung benutzt Du ja bereits, und auch ein Senden des Servers habe ich im Code erkennen können. Was nun noch fehlt, ist das definierte Kommando sowohl auf Server- wie auch auf Clientseite, so etwas wie
Code:
Userlist:Fritz#Hans#August#Grete#Isolde#Adolar
(rein beispielhaft).
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
Frage95
(Gast)

n/a Beiträge
 
#8

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 11:13
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 14:46
Delphi-Quellcode:


for i := 0 to Server.Socket.ActiveConnections -1 do
  Server.Socket.Connections[i].SendText(Nachricht);
Das ist mein Server.
Das sieht nicht sehr threadsicher aus. Änderungen an ActiveConnections während des Schleifendurchlaufs können zu Access Violations oder anderen Problemen führen.

Bei Indy gibt es LockList/Un Methoden, damit man auf die Connections threadsicher zugreifen kann (http://stackoverflow.com/questions/5...y-tidtcpserver).

Gibt es so etwas auch für diese TCP Serverkomponente?
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#10

AW: Server UserListe abfragen

  Alt 18. Nov 2013, 08:04
Ich werf mal dieses Tutorial in den Raum:

http://www.entwickler-ecke.de/topic_...s_54269,0.html
Ralph
  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 04:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz