![]() |
Tserversocket user identifizieren
hi,
ich möchte mit der Tserversocket einzelne Verbindungen zum Server identifizieren, User zuordnen und ihnen ggf. daten schicken! Momentan habe ich es so gemacht, dass alle einkommenden Verbindungen in eine listview aufgelistet werden. Aber wie kann ich die aufgelisteten Verbindungen einer connection zuordnen? mfg gandime |
Re: Tserversocket user identifizieren
Zitat:
Was willst du wozu zuordnen? IP-Addressen? Selbstgegebene Namen? |
Re: Tserversocket user identifizieren
meine Formulieren ist eben vlt etwas Verwirrend gewesen...
Jede einkommende Verbindung wir doch einer connection zugewiesen wenn ich micht nicht irre. Dem Clienten kann man dann so eine Nachricht schicken:
Delphi-Quellcode:
wie kann ich diese connection herausfinden?
Tserversockt.socket.connection[hier dann die connection]. ...
|
Re: Tserversocket user identifizieren
es gibt da einen integer wert der bei jeder connection eindeutig ist
Delphi-Quellcode:
Nur so als denkanstoß ... den rest kannst du dir selber schreiben
Socket.SocketHandle;
|
Re: Tserversocket user identifizieren
soweit war ich auch schon
Delphi-Quellcode:
sobald ich dann was senden möchte tritt ein fehler auf:
procedure TForm1.ss_serverClientConnect(Sender: TObject;
Socket: TCustomWinSocket); var i_socket:integer; begin i_socket:=Socket.SocketHandle; ... auflisten usw. end;
Delphi-Quellcode:
Fehlermeldung:
procedure TForm1.bt_sendClick(Sender: TObject);
var i,i_wo:integer; begin for I := 0 to lv_bots.Items.count - 1 do begin i_wo:=strtoint(lv_bots.Items.Item[i].SubItems.strings[8]); if (ss_server.Socket.Connections[i_wo].Connected=true) then begin ss_server.Socket.Connections[i_wo].SendText(s_bauliste_send+'|'); end; end; end; Zitat:
|
Re: Tserversocket user identifizieren
ne des ist ja auch falsch
du darst den connection id nicht als index für des connections array verwenden sondern alle connections durchgehen und schauen wo die richtige socketid ist |
Re: Tserversocket user identifizieren
joo danke jetzt gehts
|
Re: Tserversocket user identifizieren
Wozu SocketHandle? Die Socket Instanz ist genauso eindeutig.
|
Re: Tserversocket user identifizieren
Mit dem Index ist dass so eine Sache. Wenn nämlich eine Verbindung gelöst wird, verringern sich ja die Indices aller nahfolgenden Verbindungen. Bliebe wohl nur noch
1. Ständig zu prüfen, welche Nummer es denn ist (lästig) 2. Wie schon vorgeschlagen, die Socketinstanz (z.B. in einer TObjectlist) |
Re: Tserversocket user identifizieren
Wozu noch eine TObjectList? Der Serversocket hat in der Connections[] Eigenschaft eigentlich schon eine. Warum noch eine zweite die man dann noch zusätzlich pflegen muss? Dann nimm lieber die TSocket Instanz aus den Aufrufen und packe sie beim OnConnect in die TListView (TListItem.Data). Wenn der Name feststeht, dann aktualisieren den TListView Eintrag anhand der TSocket Instanz (und TListItem.Data) und bei OnDisconnect entfernst du genau den Eintrag aus dem TListView, welcher in der (TListItem.)Data Eigenschaft genau den Socket enthält, welcher dir im OnDisconnect gerade überreicht wurde.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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