Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Eine Frage zu TServeroscket (https://www.delphipraxis.net/20409-eine-frage-zu-tserveroscket.html)

SIn 17. Apr 2004 14:39


Eine Frage zu TServeroscket
 
Ich denke das mir hier sicher jemand helfen kann.

Ich möchte in meinem Programm mehrere Tserversockets benutzen, ohne die Komponente dafür mehrere Male auf die Form ziehen zu müssen. Die ServerSockets sollen in einem Array verwaltet werden "array of Tserversocket". D.h ich muss alles von Hand schreiben. Soweit klappt das auch alles bei mir . Die Serversockets sind da und man kann sich mit ihnen verbinden. Mein Problem ist aber , das ich nicht weiss wie ich die onClientRead Procedure für jeden einzelnen server aufrufen kann und ihnen nicht sagen kann , das wenn einer der Server eine Nachricht bekommt, wie es damit umgegehen soll.

auf einer Inet-Seite habe ich den Tipp bekommen

Server.OnClientRead:=ServerClientRead bzw Server[i].OnClientRead:=ServerClientRead

Dort steht, das ich die Procedure dem server von Hand hinzufügen muss.
Soweit kann ich das noch nachvollziehen. Aber was kommt dann?
Wie kann ich jetzt jedem einzelnem Server sagen was er tun soll , wenn ihn eine Nachricht empfängt.

Wäre super wenn mir jemand helfen kann.

Thx im Voraus

mfg Sin

Skiron 17. Apr 2004 14:45

Re: Eine Frage zu TServeroscket
 
du könntest ihnen entweder allen eine eigenes Event geben oder im Event auswerten, welches Socket die nachricht gekriegt hat und dann dementsprechend auswerten. im 2. Fall könntest du mit Tags arbeiten

Manzoni 17. Apr 2004 15:33

Re: Eine Frage zu TServeroscket
 
Hi,

du schreibst eine procedure in dieser form:
Delphi-Quellcode:
procedure ServerRead(Sender: TObject; Socket: TCustomWinSocket);
Diese hat die Form eines TNotify-Events. Wenn alle Server gleich mit empfangenen Nachrichten Umgehen sollen, kannst du sie "normal" schreiben. Du kannst aber auch einzelne Server unterscheiden mit
Delphi-Quellcode:
if (Sender is Server[3]) then
begin
.
.
.
end;
Für Lesevorgänge benutzt du ja den übergebenen Parameter Socket. Falls du Eigenschaften des Servers verändern willst kannst du dass ja dann z.B. so machen:
Delphi-Quellcode:
(Sender as TAbstractSocket).Active:=false;

SIn 17. Apr 2004 17:54

Re: Eine Frage zu TServeroscket
 
erst mal danke an euch beiden.

Hab aber noch 2-3 Fragen.

(Sender: TObject; Socket: TCustomWinSocket);


Sender ist dann die Variable wo die eingehende Verbindung drauf muss. so verstehe ich das mometan

aber wie siehts mit Socket: TCustomWinSocket aus. was macht das?


und die Procedure muss dann sozusagen in einer Schleife ständig aufgerufen werden?

Manzoni 17. Apr 2004 18:26

Re: Eine Frage zu TServeroscket
 
Sender ist die Komponente, die die Prozedur aufruft(durch die die Prozedur aufgerufen wird). Socket ist die aktuelle Verbindung.

SIn 17. Apr 2004 20:10

Re: Eine Frage zu TServeroscket
 
Danke dir :-D.

ps. eine Frage noch . weist du evtl ne seite wo man sich über die ganzen Sachen erkundigen kann?

z.b was TCustomWinSocket bedeutet oder TNotify-Events.
Bin auf dem Gebiet absoluter Anfänger.

mfg Sin

Manzoni 18. Apr 2004 09:56

Re: Eine Frage zu TServeroscket
 
hi,

na aufjedenfall ist die erste Anlaufstelle die Online-Hilfe von Delphi, Stichwort TNotifyEvent. Wenn du Tutorials suchst, kann ich dir die Seite von Delphi-Source empfehlen. Gute Tips findest du bei SwissDelphiCenter.

SIn 18. Apr 2004 12:42

Re: Eine Frage zu TServeroscket
 
kewl
ich zieh mir das auf jedenfall rein!

So, nun hab ich aber auch wirklich alles was ich brauche.
merci nochmal
mfg SIn

Muetze1 19. Apr 2004 14:28

Re: Eine Frage zu TServeroscket
 
Moin!

Nachdem was du hier bisher beschrieben hast frage ich mich, ob du wirklich ein Array von TServerSocket brauchst. Daher mal als Informatione: Ein TServerSocket kann mehrere TClientSocket anbinden und somit bis zu x unterschiedliche Clients gleichzeitig bedienen. Bei mehreren TServerSockets müssen alle auch unterschiedliche Portnummern haben - und ich weiss nicht ob du es so lösen wolltest, das jeder Client einen TServerSocket bekommt.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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