Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy TCP Server nur max ~100mal instanziierbar ? (https://www.delphipraxis.net/21911-indy-tcp-server-nur-max-%7E100mal-instanziierbar.html)

supermuckl 9. Mai 2004 23:25


Indy TCP Server nur max ~100mal instanziierbar ?
 
ich bekomme immer den fehler

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EThread with message 'Thread creation error: Für diesen Befehl ist nicht genügend Speicher verfügbar'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

wenn ich etwa 100 TIdTCPServer instanziieren will... die exception passiert immer in TidThread ( die von Indy benutzt wird )

hab schon versucht den stack zu vergrößern aber das brachte nix ( hat ja auch net so vield damit zu tun ;)

hier bleibt der dinger stecken:

Delphi-Quellcode:
constructor TIdThread.Create(ACreateSuspended: Boolean);
begin
  // Before inherited - inherited creates the actual thread and if not suspeded
  // will start before we initialize
  FStopped := ACreateSuspended;
  FLock := TCriticalSection.Create;
  inherited Create(ACreateSuspended);
  {$IFNDEF VCL6ORABOVE}
    if (ThreadID=0) then begin
      RaiseLastWin32Error;
    end;
  {$ENDIF}
  try //                    <---- ERROR
    IncThread(SELF);
  except end;
end;
der code womit ich instanziiere:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
server: Tidtcpserver;
begin
for i := 1 to 5000 do begin

 server := Tidtcpserver.Create(nil);
 server.DefaultPort := i;
 server.Onconnect := form1.IdTCPServer1connect;
 server.OnExecute := form1.IdTCPServer1Execute;
 server.ListenQueue := 1; // <- hat auch nix gebracht
 server.Active := true;


end;
end;
wie kann ich jetzt ca 65000 server auf verschiedenen ports instanziieren?
oder geht das einfacher und ressourcensparender mit einer anderen componente ?

supermuckl 9. Mai 2004 23:58

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
nachtrag: es sind genau 123 server die created werden.. der rest landet als exception im nirvana ;)

Sharky 10. Mai 2004 05:42

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
Zitat:

Zitat von supermuckl
...

Code:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
server: Tidtcpserver;
begin
  for i := 1 to 5000 do
  begin
    server := Tidtcpserver.Create(nil);
    [color=red]server.DefaultPort := i;[/color]
  end;
end;
...

Hai supermuckl,

hat nicht direkt etwas mit deiner Frage zu tun. Aber ist es absicht das Du die Ports von 1 aufwährts belegen möchtest?
Da wirst Du so oder so Probleme bekommen!

Dax 10. Mai 2004 06:25

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
Und selbst wenn: Die Listen-Threads des Indy-Servers, mit er die Connections abhört sind nun mal, na ja, Threads. Und solche Threads verbrauchen Speicherplatz und Rechenleistung. Irgendwann wirds dem rechner zu viel und er lässt dich nicht mehr weitermachen.

BtW: Statt ALLE Ports zu nutzen, einig dich doch auf ein paar, z.B.:
-11554
-235
-7856
-9987

ES GIBT VON MIR KEINE!!! GARANTIE, DASS DIESE PORTS AUCH WIRKLICH FREI SIND!

Sharky 10. Mai 2004 06:33

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
Zitat:

Zitat von Dax
...ES GIBT VON MIR KEINE!!! GARANTIE, DASS DIESE PORTS AUCH WIRKLICH FREI SIND!

Laut RFC sind auf jeden Fall die Ports bis 1024 "reserviert" Inzwichen glaube ich sind sie sogar noch höher gegangen.

Dax 10. Mai 2004 12:22

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
Na und wenn schon.

Dann nimmt man halt Port 80 her und hat auch gleich noch 'ne sichere Firewall :mrgreen:

DataCool 10. Mai 2004 12:38

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
Was soll eigentlich der Schwachsinn so viele Server-Instanzen zu erzeugen ?

Gibt es dafür einen logischen Grund ?

Willst Du damit einen Portscanner verwirklichen ?

Gruß Data

Dax 10. Mai 2004 12:44

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
Für einen Portscanner braucht man aber nur eine Instanz, aber einen Client, und checkt einfach in einer Schleife alle Ports durch. Nein, der hat was anderes vor...

DataCool 10. Mai 2004 12:50

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
@Dax:
Deshalb frage ich ja :mrgreen: Konnte mir nicht vorstellen das er so einen Portscanner verwirklichen will.

@Supermuckel:
Raus mit der Sprache, was soll das Ganze ?

Dax 10. Mai 2004 12:50

Re: Indy TCP Server nur max ~100mal instanziierbar ?
 
@DataCool: Ich schiesse mich an: was soll das ganze?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.
Seite 1 von 2  1 2      

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