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 2 von 4     12 34      
Frage95
(Gast)

n/a Beiträge
 
#11

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 10: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
 
#12

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 11: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.625 Beiträge
 
Delphi 12 Athens
 
#13

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 11: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
 
#14

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 11: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.625 Beiträge
 
Delphi 12 Athens
 
#15

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 11: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
 
#16

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 12:13
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#17

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 12:25
Genauso wie die Benutzernachtichten zu den Clients kommen, kannst du auch die Benutzerliste da hinsenden.
$2B or not $2B
  Mit Zitat antworten Zitat
Frage95
(Gast)

n/a Beiträge
 
#18

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 12:39
schon klar aber woher bekomme ich diese Liste ?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 12:57
Indem Du sie erstellst?
z.B. so:
Delphi-Quellcode:
Userlist: Tstringlist;

..
Userlist:=Tstringlist.create;

procedure TfrmServer.ServerClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' verbunden.');
  Userzahl:=Userzahl +1; // woher auch immer das kommt!
  Userlist.Add(UserName); // woher auch immer das kommt!
  User.Caption:='User: ' + IntToStr(Userzahl);
end;

procedure TfrmServer.ServerClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
var
  uli : integer;
begin
  Memo1.Lines.Add('Status: Client ' + Socket.RemoteAddress + ' getrennt.');
  Userzahl:=Userzahl -1;
  uli:=userList.Indexof(UserName); // woher auch immer das kommt!
  if uli>-1 then Userlist.delete(uli); // woher auch immer das kommt!
  User.Caption:='User: ' + IntToStr(Userzahl);
end;
So könnte man es machen, die Frage ist aber wo die Information UserName herkommt, ebenso scheint ja auch Userzal vom Himmelgefallen zu sein und User könnte ein Formular sein.
Für mich etwas zu viel Konjunktiv.

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

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#20

AW: Server UserListe abfragen

  Alt 15. Nov 2013, 13:09
Man kann die Namen auch in den Benutzerdaten des Socket speichern.
Muß dann beim erstellen der Liste nur alles sockets auflisten und da den Namen auslesen.

Oder wenn es nur in der Userlist gespeichert wird,
dann macht es sich nicht schlecht da auch den zugehörigen Socket mit zu speichern, damit man eine Verbindung zwischen Socket und Benutzer hat.

PS: Useranzahl := Userlist.Count;
$2B or not $2B

Geändert von himitsu (15. Nov 2013 um 13:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      

 

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 00:13 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