Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   TIdTCPServer & TIdTCPClient - Verschiedene Fragen (https://www.delphipraxis.net/153921-tidtcpserver-tidtcpclient-verschiedene-fragen.html)

blackfin 23. Aug 2010 14:58

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen
 
1)
Windows XP Professional (32Bit)
Intel Core2Duo E6600
2 GB RAM

Zitat:

1994
EIDsocketError::Socket Error # 10061 Connection refused


2)
Windows Server 2003 Web Edition (32Bit)
Intel Core2Duo E6600
2 GB RAM

Zitat:

3969
EIDCouldNotBindSocket::Could not bind socket. Address and port are already in use.

RWarnecke 23. Aug 2010 20:07

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen
 
Hallo zusammen,

wow, soviele Informationen. Da muss ich mich erstmal durchwurschteln. Aber ich danke schon mal allen im voraus für Ihre Antworten.

Bei meinem Rechner mit Windows 7 64Bit 8GB RAM gab es 1578 Verbindungen.

Bei meinem Server 2008 32Bit 1GB RAM gab es zwischen 1999 und 2020 Verbindungen. Beim 2. Server 2008 32Bit mit 2GB RAM um die 2000 Verbindungen +/- 5 Verbindungen.

Bei dem kleinen Testprogramm von Win32.API habe ich ja die obenstehenden Ergebnisse. Heißt das also, ich kann wie in meinem Beispiel 2000 gleichzeitige Verbindungen zu meinem Server haben ?

Win32.API 23. Aug 2010 20:58

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen
 
Ja, die 2000 Verbindungen sind auf jeden Fall möglich, vielleicht auch mehr. Es könnte auch gut seinen, dass Windows in diesem Fall limitiert, da alle Connects von der selben IP kommen.

Ich habe es gerade nochmal auf einen Windows XP getestete, hier ist nach ca. 2000 Connects Schluss (Indy 10.5.7). Es scheint also allein am OS zu liegen und eine "Limitierung" im TCP/IP-Stack zu seinen.

--Win32

samso 23. Aug 2010 21:21

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen
 
Die maximale Threadanzahl (pro Prozess) ist nicht vom physikalischen Speicher abhängig sondern vom virtuellen Adressraum. Ein Thread belegt den Speichern nicht wirklich, sondern er belegt nur den Adressraum. Erst wenn der Stack tatsächlich benutzt wird, wird physikalischer Speicher verwendet. Siehe dazu auch:

http://msdn.microsoft.com/en-us/libr...74(VS.85).aspx
http://blogs.technet.com/b/markrussi...8/3261309.aspx

Ich habe beim Linker die Max. Stackgröße gegenüber dem Standardwert halbiert ($80000) und bekomme dann mit dem Testprogramm von Win32 doppelt soviele Verbindungen (rund 4000).
Wenn ich die Max Stackgröße auf 65536 heruntersetzt, steigt die Anzahl der Verbindungen unter XP nicht weiter an, weil XP anscheinend nur die Ports 1025..5000 (=>3976 mögliche Verbindungen) belegt. Bei W7-64 werden nach meinen aktuellen Untersuchungen die Ports 49155..65535 belegt. Hier bekomme ich dann 6019 gleichzeitige Verbindungen.
D.h. abweichend von meiner ersten Antwort, ist mein jetziger Kenntnisstand: Die maximale Anzahl der gleichzeitigen Serververbindungen ist durch die maximale Anzahl der gleichzeitigen Threads und die Anzahl der belegbaren Ports begrenzt.

RWarnecke 28. Aug 2010 09:30

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen
 
Zitat:

Zitat von samso (Beitrag 1044458)
Ich habe beim Linker die Max. Stackgröße gegenüber dem Standardwert halbiert ($80000) und bekomme dann mit dem Testprogramm von Win32 doppelt soviele Verbindungen (rund 4000).
Wenn ich die Max Stackgröße auf 65536 heruntersetzt, steigt die Anzahl der Verbindungen unter XP nicht weiter an, weil XP anscheinend nur die Ports 1025..5000 (=>3976 mögliche Verbindungen) belegt. Bei W7-64 werden nach meinen aktuellen Untersuchungen die Ports 49155..65535 belegt. Hier bekomme ich dann 6019 gleichzeitige Verbindungen.
D.h. abweichend von meiner ersten Antwort, ist mein jetziger Kenntnisstand: Die maximale Anzahl der gleichzeitigen Serververbindungen ist durch die maximale Anzahl der gleichzeitigen Threads und die Anzahl der belegbaren Ports begrenzt.

Das hört sich ja richtig gut an. Ich danke allen nochmals für die Antworten. Meine Fragen sind erstmal soweit beantwortet.

Thoma50s 18. Nov 2021 06:27

TIdTCPServer
 
Hallo,
ich habe folgendes Problem. ich bin gerade in der Ausbildung und soll einen Server erstellen, der mit dem Localhost verbunden ist, und Datenströme von verschiedenen entgegennehmen soll. Für den Server habe ich mir folgenden Quelltext heruntergeladen:

procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
var cmd: String;
begin
try
cmd := Trim(AContext.Connection.IOHandler.ReadLn);
Label1.Caption := cmd;
AContext.Connection.IOHandler.WriteLn('Bye!');
finally
AContext.Connection.Disconnect;
end;
end;

der Server sendet auch BYE an den localhost und im Label wird auch Localhost angezeigt wenn ich das im Browser eingebe. Jetzt soll ich über den Server im Browser in die Befehlszeile Variablen übergeben und ich weiss einfach nicht, wie ich das anstellen soll. Ich sollte mich dazu mit Webprogrammierung befassen aber ich komme da einfach nicht weiter; vielleicht hat ja jemand eine Idee, wie das funktioniert.

mjustin 18. Nov 2021 07:44

AW: TIdTCPServer
 
Indy enthält eine Http Server Komponente, damit kann das umgesetzt werden.

TIdHttpServer

Die enthält ein OnCommandGet Event.

Das erhält die im Browser angegebenen Eingaben der Adresszeile.

Sie stehen im request Objekt, das der OnCommandGet Event Händler als Parameter bekommt.

Thoma50s 18. Nov 2021 07:57

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen
 
Danke, probier ich gleich aus
:-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 Uhr.
Seite 2 von 2     12   

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