Building Multi-threaded TCP/IP-Server

Will ich bauen eine TCP/IP-server, der verwendet wird um bis zu 100 gleichzeitigen clients, aber immer noch nicht sicher, wie, um loszulegen.

zumindest ich brauche den server um diese:

  1. Hören-client, und speichern Sie Sie auf array oder eine Liste.
  2. für jeden client, müssen Sie empfangen und senden von Daten basierend auf der client-status.
  3. Sollte der server aktualisiert die clients-Liste, wenn jemand eine Verbindung herstellen oder trennen.
  4. Lieber zur Arbeit als Dienst mit GUI zu verwalten.

Könnte mir jemand helfen wie man anfangen,die ich sah indy Probe, aber Sie nicht helfen, sah auch für die meisten Komponenten aber noch auf der Suche.

  • So referenziert in anderen Fragen, wenn Sie Ihre wirkliche Anzahl der clients größer als 1000 ist, könnten Sie haben einige große Speicherauslastung, wenn Indy ist eingerichtet mit einem thread pro concurrent client. Mit async oder Fortsetzung basierten Ansätzen, ist es möglich, das Sie bewältigen konnten viele weitere verbindungen mit weniger threads. stackoverflow.com/questions/37185/...
  • Sie möchten möglicherweise überprüfen Sie heraus-ICS-Komponenten von Francois Piette und vergleichen. Einige Leute finden, die Indy besser für Sie, einige Leute finden, die ICS besser für Sie.
  • Ich denke, dass der blockierende Ansatz ist falsch gemacht in den meisten Fällen. Hab nach einem thread aktiv für die gesamte Lebensdauer der die Sitzung / das Objekt ist schlicht und einfach falsch. Sie brauchen nur einen taks / thread-pool und für jede einzelne Anfrage, die Sie verwenden ein thread aus dem pool. Auf diese Weise haben Sie nur so viele threads, da gibt es viele gleichzeitige Anfrage läuft bei der gleichen Zeit. Und viel Glück erreichte sogar 100 gibt.
  • Indy bietet 3 Arten von Scheduler: Thread-basierte, Thread mit thread-pool und Glasfaser-basierte. Standardmäßig Indy benutzt die einfache thread-basierten scheduler. Wenn Sie einen thread-pool, alles, was Sie tun müssen, ist, weisen Sie ein TIdSchedulerOfThreadPool Beispiel Ihren IdTCPServer.Scheduler-Eigenschaft.
InformationsquelleAutor DelphiDev | 2010-02-18
Schreibe einen Kommentar