Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ServerSocket Prozeduren zuweisen (https://www.delphipraxis.net/54676-serversocket-prozeduren-zuweisen.html)

Rastaman 9. Okt 2005 16:33


ServerSocket Prozeduren zuweisen
 
Hallo. Ich habe ein Programm ohne Form und möchte einem ServerSocket ein OnClientconnect-Ereigniss zuweisen.
Allerdings hab ich nich so richtig Ahnung wie das ohne Form geht.

Delphi-Quellcode:

var
  Self: TComponent;

begin
  //Server starten
  Server := TServerSocket.Create(Self);
  with Server do
  begin
    Port := StrToInt(ServerPort);
    ServerType := stNonBlocking;
    ThreadCacheSize := 10;
    OnClientConnect := ???????????????????;
    Active := True;
  end;
Wie muss ich das jetzt machen :gruebel:

marabu 9. Okt 2005 19:23

Re: ServerSocket Prozeduren zuweisen
 
Hallo Gerrit,

versuche es mal so:

Delphi-Quellcode:
type
  TMyServerSocket = class(TServerSocket)
  private
    procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
  end;

procedure TMyServerSocket.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  // ...
end;


begin
  //Server starten
  Server := TMyServerSocket.Create(Self);
  with Server do
  begin
    Port := StrToInt(ServerPort);
    ServerType := stNonBlocking;
    ThreadCacheSize := 10;
    OnClientConnect := ClientConnect;
    Active := True;
  end;
Grüße vom marabu

Rastaman 9. Okt 2005 20:57

Re: ServerSocket Prozeduren zuweisen
 
Code:
[Fehler] Server.dpr(58): E2003 Undefinierter Bezeichner: 'ClientConnect'
:(

marabu 9. Okt 2005 21:22

Re: ServerSocket Prozeduren zuweisen
 
Nicht traurig sein, Gerrit. Die Fehlermeldung stammt von D05? Zeige mal den Code, der nicht compiliert - vielleicht fällt ja jemandem etwas auf...

marabu

Rastaman 9. Okt 2005 21:35

Re: ServerSocket Prozeduren zuweisen
 
Da issa:

Delphi-Quellcode:

type
  TMyServerSocket = class(TServerSocket)
  private
    procedure ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
end;

var
  Self: TComponent;
  Server: TServerSocket;

procedure TMyServerSocket.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  //blabla
end;

begin

  //Server starten
  Server := TMyServerSocket.Create(Self);
  with Server do
  begin
    Port := StrToInt(ServerPort);
    ServerType := stNonBlocking;
    ThreadCacheSize := 10;
    OnClientConnect := ClientConnect;
    Active := True;
  end;
end.

LoRd-MuldeR 9. Okt 2005 23:34

Re: ServerSocket Prozeduren zuweisen
 
Wir wär's denn damit?

Delphi-Quellcode:

type
  TMyServerSocket = class(TServerSocket)
  private
    procedure OnClientConnect(Sender: TObject; Socket: TCustomWinSocket); override;
end;

var
  Server: TMyServerSocket;

procedure TMyServerSocket.OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
  // Dein Code hier!
end;

begin
  //Server starten
  Server := TMyServerSocket.Create(Self);
  with Server do
  begin
    Port := StrToInt(ServerPort);
    ServerType := stNonBlocking;
    ThreadCacheSize := 10;
    Active := True;
  end;
end.

Rastaman 9. Okt 2005 23:47

Re: ServerSocket Prozeduren zuweisen
 
Cool das funktioniert schonmal mit dem compilieren jetz :thumb:
Ob die Prozedur auch aufgerufen wird kann ich erst sehen wenn ich den Client feddich hab :mrgreen:

Rastaman 9. Okt 2005 23:58

Re: ServerSocket Prozeduren zuweisen
 
Ok ich hab schnell ne Form genommen und n client hingepflanzt der verbindet.
Passiert aber nichts ...
ich halte den Server so am Leben, vllt liegts daran ja:

Delphi-Quellcode:
  while True do
  begin                    //Endlosschleife die den Server am Leben hällt
    if Proceed = False then
      Exit;
  end;

JasonDX 10. Okt 2005 00:12

Re: ServerSocket Prozeduren zuweisen
 
Zitat:

Zitat von Gerrit89
Ok ich hab schnell ne Form genommen und n client hingepflanzt der verbindet.
Passiert aber nichts ...
ich halte den Server so am Leben, vllt liegts daran ja:

Delphi-Quellcode:
  while True do
  begin                    //Endlosschleife die den Server am Leben hällt
    if Proceed = False then
      Exit;
  end;

Es liegt (u.a.) sicher daran. Denn soweit ich das sehe hat das Programm nirgends die Möglichkeit, die Variable 'Proceed' upzudaten, womit das eine ewige Endlosschleife wird ;)
Wozu du diese Schleife brauchst verstehe ich nicht, denn afaik bleibt dir der Server auch so am Leben, bis du ihm sagst, dass er sich und seine Verbindungen umbringen soll :mrgreen:

LoRd-MuldeR 10. Okt 2005 00:15

Re: ServerSocket Prozeduren zuweisen
 
Zitat:

Zitat von Chimaira
Zitat:

Zitat von Gerrit89
Ok ich hab schnell ne Form genommen und n client hingepflanzt der verbindet.
Passiert aber nichts ...
ich halte den Server so am Leben, vllt liegts daran ja:

Delphi-Quellcode:
  while True do
  begin                    //Endlosschleife die den Server am Leben hällt
    if Proceed = False then
      Exit;
  end;

Es liegt (u.a.) sicher daran. Denn soweit ich das sehe hat das Programm nirgends die Möglichkeit, die Variable 'Proceed' upzudaten, womit das eine ewige Endlosschleife wird ;)
Wozu du diese Schleife brauchst verstehe ich nicht, denn afaik bleibt dir der Server auch so am Leben, bis du ihm sagst, dass er sich und seine Verbindungen umbringen soll :mrgreen:

Ich glaub das Programm hat keine Form. Ohne die Schleife würde es dann zum Ende laufen und Beenden.

Wenn ich richtig liege, bau dein Server-Programm doch auf ner Form auf. Kannst sie ja mit TForm.Hide unsichbar machen. Dann brauchst du nich diese merkwürdige Schleife...

Rastaman 10. Okt 2005 00:18

Re: ServerSocket Prozeduren zuweisen
 
Das geht nicht, weil ich
1. Das Programm klein halten möchte und
2. zu blöd für komplettes non VCL bin :mrgreen:

@Chimaira:
Doch, z.B wenn Proceed per Anweisung vom Client auf False gesetzt werden soll!

LoRd-MuldeR 10. Okt 2005 00:21

Re: ServerSocket Prozeduren zuweisen
 
Ich glaub eine Form wird dein Programm nich plötzlich riesig groß machen ^^

LoRd-MuldeR 10. Okt 2005 00:23

Re: ServerSocket Prozeduren zuweisen
 
Zitat:

@Chimaira:
Doch, z.B wenn Proceed per Anweisung vom Client auf False gesetzt werden soll!
Wenn dein Progi in der Endlosschleife festhängt, hat es ja keine Chance den "OnClientConnect" Event auszulösen. Ergo kann der Client auch Proceed net ändern.

Rastaman 10. Okt 2005 00:25

Re: ServerSocket Prozeduren zuweisen
 
Doch.

Ohne Form: 127 kb
Mit Form : 384 kb

Zitat:

Zitat von LoRd-MuldeR
Zitat:

@Chimaira:
Doch, z.B wenn Proceed per Anweisung vom Client auf False gesetzt werden soll!
Wenn dein Progi in der Endlosschleife festhängt, hat es ja keine Chance den "OnClientConnect" Event auszulösen. Ergo kann der Client auch Proceed net ändern.

I know, aber wie soll ich das Programm sonst weiter laufen lassen?

LoRd-MuldeR 10. Okt 2005 00:27

Re: ServerSocket Prozeduren zuweisen
 
1. In der heutigen Zeit bringt ein 300KB Progi wohl niemand um, oder?
2. Lass UPX über dein Proggi laufen und es is eh nur noch 25% so groß
3. Um dein Progi am Laufen zu halten, ohne das es dabei einfriert, könntest du einen Message-Loop zusammenbauen. Aber frag mich bitte net, wie genau man das macht
4. Mit ner Form hast du alles schon vorgefertigt, definitiv der unproblematischste Weg!

marabu 10. Okt 2005 09:39

Re: ServerSocket Prozeduren zuweisen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Gerrit,

schreibst du eine Konsolanwendung? Oder ist das einfach eine GUI Anwendung ohne GUI, aus der du die unit FORMS verbannt hast?

marabu

PS: Falls du gerne liest - ich habe dir etwas Quellcode angeklebt...

Rastaman 10. Okt 2005 12:51

Re: ServerSocket Prozeduren zuweisen
 
Öhm...Steig ich nich so wirklich durch.
Ich glaub ich muss mir erstmal anguggn was initialization und finalization heisst.


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