Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#4

AW: TIdTCPServer & TIdTCPClient - Verschiedene Fragen

  Alt 23. Aug 2010, 07:41
Beim TIdTCPServer wird für jeden Client ein Thread eröffnet.

>Wie hoch ist die maximale Clientzahl, die ich an einen TIdTCPServer connecten kann ?
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. Windows begrenzt die maximal Anzahl der TCP-Verbindungen ebenfalls. Allerdings habe ich bisher keine belastbaren Zahlen darüber gefunden, wie groß diese Zahl denn nun ist. Viele Dokumente stammen aus NT-Zeiten, diverse Parameter haben augenscheinlich heute keinen Relevanz mehr usw. Nach meinen persönlichen Erfahrungen scheint diese Zahl bei einer normalen Arbeitsstation (also nicht Server) auch bei ca. 2000 Verbindungen zu liegen. Dazu kommt dann noch, dass eine freigegebene Verbindung nicht sofort wieder belegt werden kann. Wenn sich also 2000 Clients verbinden, sofort wieder trennen und sich dann die nächsten 2000 Clients verbinden wollen, dann wird das nicht funktionieren, weil die 2000 alten Verbindungen erst nach 3 Minuten wirklich freigegeben werden (dazu gibt es irgendwo eine readme von Borland zum Interbase-Server)

>Wie läuft die Verarbeitung ab, kann ich mir das so Vorstellen wie in einem Spooler ?
Die angeschlossenen Clients werden quasiparallel abgearbeitet. Die Zeichenketten für jede einzelne Verbindung sind aber streng seriell.

>Wenn ich mit einem TIdTCPClient per Writeln mehrere Zeichenketten übertrage an den Server, werden alle nacheinander abgearbeitet oder kann mir dann ein zweiter Client dazwischen funken ?
Der Server zerlegt die ankommenden Zeichenketten, indem er nach dem Zeilenende sucht. Für Dich sieht es also so aus, als ob die Zeilen einzeln ankommen würden. Die Zeichenketten unterschiedlicher Clients können sich nicht mischen. (Tip: Falls die kleine Verzögerung bei der Übertragung einzelner kurzer Kommandos störend ist: s.a. Stichwort "UseNagle" bzw. "TCP_NoDelay")
  Mit Zitat antworten Zitat