AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke TIdTCPServer & TIdTCPClient - Verschiedene Fragen
Thema durchsuchen
Ansicht
Themen-Optionen

TIdTCPServer & TIdTCPClient - Verschiedene Fragen

Ein Thema von RWarnecke · begonnen am 20. Aug 2010 · letzter Beitrag vom 18. Nov 2021
 
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#7

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen

  Alt 23. Aug 2010, 09:40
Die Threadanzahl wird durch den Speicher begrenzt. Da pro Thread mind 1MB Speicher angefordert wird, ist also spätestens bei 2048 Clients Schluss. Ich habe nicht untersucht, ob durch Änderung von Parametern die Größe des angeforderten Speichers geändert werden kann.
Die von Indy erstellten Threads haben keine 1MB StackSize, deshalb ist der Speicher hier nicht limitierend (1500 Threads vs ~80MB).

Hier mal ein Beispiel:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows, Sysutils, IdBaseComponent, IdComponent, IdCustomTCPServer, IdTCPServer,
  IdContext, IdTCPConnection, IdTCPClient;

type
  TTestServer = class(TIdTCPServer)
  private
    procedure MyOnExecute(AContext: TIdContext);
  public
    constructor Create;
  end;

{ TTestServer }

constructor TTestServer.Create;
begin
  inherited Create(nil);
  with (Bindings.Add) do
    Port := 5000;
  OnExecute := MyOnExecute;
  Active := True;
end;

procedure TTestServer.MyOnExecute(AContext: TIdContext);
begin
  Sleep(1000);
end;

var
  Server: TTestServer;
  Client: TIDTCPClient;
  i: Integer;
begin
  Server := TTestServer.Create();

  try
    for i := 1 to 10000 do
    begin
      Client := TIdTCPClient.Create(nil);
      Client.Connect('localhost', 5000);
      writeln(i);
    end;
  except
    on e: Exception do
      writeln(Format('%s::%s', [E.ClassName, E.Message]));
  end;

  writeln('Client Version: ', Client.Version);
  writeln('Server Version: ', Server.Version);
  readln;
end.
Auf diesem Rechner hier (Win7 64bit, Dualcore, 4GB RAM) ist nach 1546 Connects Schluss (Connection refued #10061). Würde mich freuen, wenn Ihr diesen Test mal bei euch ausführt und die Ergebnisse Postet. (Achtung: Bitte nicht mit Debugger ausführen, da Delphi sonst streikt!)

Connects: 1546
Client/Server Version: 10.5.5

In diesem Fall scheint Windows zu limitieren, wahrscheinlich die Max Anzahl von TCP-Connections.

-Win32
  Mit Zitat antworten Zitat
 


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 05:38 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