AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TServerSocket Connections[x]
Thema durchsuchen
Ansicht
Themen-Optionen

TServerSocket Connections[x]

Ein Thema von Random · begonnen am 14. Jul 2004 · letzter Beitrag vom 17. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Random

Registriert seit: 14. Jul 2004
8 Beiträge
 
Delphi 6 Personal
 
#1

TServerSocket Connections[x]

  Alt 14. Jul 2004, 19:51
Hallo, ich habe eine Frage zum TServerSocket.

Um an eine Verbindung von TServerSocket Text zu verschicken, nehme ich an, dass man diesen Befehl verwendet:
Socket.Socket.Connections[x].SendText(text); Nun ist mein Problem:
wie finde ich raus welches "x" die jeweilige Verbindung hat? Es war mir möglich mit dem von OnClientRead übergebenen "Socket" durch "Socket.SocketHandle" ein Integer-Handle einzulesen, mit welchem ich die Verbindungen zuordnen kann.
Wie kann ich nun beim Versenden das Handle dem entsprechenden "x" zuordnen?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: TServerSocket Connections[x]

  Alt 15. Jul 2004, 18:54
Moin!

Connections[] liefert dir eine Instanz vom Typ TCustomWinSocket zurück und das entspricht deinem Socket beim OnClientRead. Somit hast du 2 Möglichkeiten:

1. Im OnClientRead einfach Socket.SendText(); aufrufen und somit gar nicht erst den Socket suchen, da er dir übergeben wird.
2. Eine Schleife über alle Connections[] machen und vergleichen ob Connections[] = Socket ist...

Ich empfehle mal so pauschal die 1. Methode...

MfG
Muetze1
  Mit Zitat antworten Zitat
Random

Registriert seit: 14. Jul 2004
8 Beiträge
 
Delphi 6 Personal
 
#3

Re: TServerSocket Connections[x]

  Alt 15. Jul 2004, 20:31
Nun gut, dies würde vorraussetzen, dass der Server dem Client sofort antwortet. Es geht mir aber vorwiegend darum, die Clients zuordnen und später, vom Server selbstständig ansprechen zu können.

Beispiel: Der Server merkt sich wann sich ein Client angemeldet hat und schreibt ihm nach einer Stunde "du bist jetzt seit einer Stunde angemeldet."
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#4

Re: TServerSocket Connections[x]

  Alt 15. Jul 2004, 21:25
jo dann tu das handle vom clientsocket zusätzlich in ein record oder klasse und dann kannste damit andere daten verknüpfen..
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Random

Registriert seit: 14. Jul 2004
8 Beiträge
 
Delphi 6 Personal
 
#5

Re: TServerSocket Connections[x]

  Alt 16. Jul 2004, 01:07
Oh, das geht? Gut, danke!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: TServerSocket Connections[x]

  Alt 16. Jul 2004, 01:31
Moin!

Auf meiner HP liegt ein kleiner Chat rum auf Basis von TClientSocket/TServerSocket. Dort habe ich eine kleine Klasse angelegt pro Benutzer die sich dann den Socket aufnimmt (also die Instanzen Adresse) und darüber kann ich dann leicht die Benutzer zuordnen etc . Die Benutzer-Klasseninstanzen werden in einer eigenen TObjectList Ableitung gehalten die dann auch z.B. Funktionen bietet an alle Nutzer zu senden (alle enthaltenen Instanzen durchlaufen und den Socket haben dann ja die einzelnen Instanzen). Eintragen der Instanz bei OnClientConnect und austragen bei OnClientDisconnect. Klappt wunderbar. Ansonsten einfach mal auf eine HP gehen (Delphi->Projekte) und mal anschauen...

MfG
Muetze1
  Mit Zitat antworten Zitat
Random

Registriert seit: 14. Jul 2004
8 Beiträge
 
Delphi 6 Personal
 
#7

Re: TServerSocket Connections[x]

  Alt 16. Jul 2004, 02:58
Zur Komplettierung dieses Topics möchte ich hier noch den Tip eines Bekannten erwähnen -

man lasse einfach einen Zähler mitlaufen, der bei jedem OnConnect um eins steigt. Der Wert des Zählers wird dann mit den Userdaten gespeichert und entspricht später dem "x" in Connections[x].


Gibts eigentlich irgendwo eine Komplettlösung zu meinem Quest? (nicht antworten, das ist rhetorisch gemeint! )
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#8

Re: TServerSocket Connections[x]

  Alt 16. Jul 2004, 10:08
es gibt in den indy demos ein tcp client/server demo das die user verwaltung komplett beinhaltet

mit einem record :>

is zwar kein gesockse.. aber falls indy benutzen willst oder ein scheibchen davon verwenden willst isses cool
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: TServerSocket Connections[x]

  Alt 16. Jul 2004, 16:37
Moin!

@Random: Der Zähler hilft dir nix mehr, wenn bei 5 Clients der 2. getrennt wird - dann stimmen die Indizies nicht mehr. Schau dir sonst wirklich mal meinen Chat an als Ideenbeispiel. Alle Quellen auf meiner HP sind ja frei verwendbar als kannst du dir da auch die Ideen her klauen...

MfG
Muetze1
  Mit Zitat antworten Zitat
Random

Registriert seit: 14. Jul 2004
8 Beiträge
 
Delphi 6 Personal
 
#10

Re: TServerSocket Connections[x]

  Alt 17. Jul 2004, 02:18
Man wird's nicht glauben, aber es funktioniert mit dem Counter, da beim Connections[] Dings die Socketpointer/whatever bei Disconnect durch nil ersetzt werden und damit die Reihenfolge erhalten bleibt.

Nichts gegen deine Idee (welche wesentlich eleganter ist) aber diese Methode hier ist relativ simpel und funktioniert bei mir auch schon.
  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 21: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