AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Tserversocket user identifizieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tserversocket user identifizieren

Ein Thema von gandime · begonnen am 13. Mai 2007 · letzter Beitrag vom 13. Mai 2007
Antwort Antwort
gandime
(Gast)

n/a Beiträge
 
#1

Tserversocket user identifizieren

  Alt 13. Mai 2007, 13:20
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
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 13:25
Zitat:
Aber wie kann ich die aufgelisteten Verbindungen einer connection zuordnen?

Was willst du wozu zuordnen? IP-Addressen? Selbstgegebene Namen?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#3

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 13:30
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:
Tserversockt.socket.connection[hier dann die connection]. ... wie kann ich diese connection herausfinden?
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 13:32
es gibt da einen integer wert der bei jeder connection eindeutig ist
Socket.SocketHandle; Nur so als denkanstoß ... den rest kannst du dir selber schreiben
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#5

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 13:42
soweit war ich auch schon
Delphi-Quellcode:
procedure TForm1.ss_serverClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
var
  i_socket:integer;
begin
  i_socket:=Socket.SocketHandle;
... auflisten usw.
end;
sobald ich dann was senden möchte tritt ein fehler auf:
Delphi-Quellcode:
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;
Fehlermeldung:
Zitat:
Erste Gelegenheit für Exception bei $7C812A5B. Exception-Klasse EListError mit Meldung 'Listenindex überschreitet das Maximum (5980)'. Prozess Project1.exe (4040)
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#6

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 14:33
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
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#7

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 15:17
joo danke jetzt gehts
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 20:27
Wozu SocketHandle? Die Socket Instanz ist genauso eindeutig.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 21:16
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)
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#10

Re: Tserversocket user identifizieren

  Alt 13. Mai 2007, 22:50
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:32 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