AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Viele permanente IP-Verbindungen parallel handeln

Viele permanente IP-Verbindungen parallel handeln

Ein Thema von UweR · begonnen am 17. Aug 2007 · letzter Beitrag vom 17. Aug 2007
Antwort Antwort
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#1

Viele permanente IP-Verbindungen parallel handeln

  Alt 17. Aug 2007, 12:09
Hallo Leute,

ich muß mit einem TCP-server permanente Verbindungen parallel handeln. Bisher bin ich einfach hingegangen hab nen Indy-Server genommen, mir nen Thread abspalten lassen, da eine Klasse drangepappt die mir die Daten einliest und diese dann schön threadsafe an meine Applikation übergeben die damit irgendwas anstellt wie in ne Datenbank schreiben etc.. Bis jetzt war die Anzahl der Verbindungen ein paar Hundert und es hat damit auch funktioniert. Nur jetzt sollen aus hunderten Tausende werden und das tausende Threads da in der Gegend rumschwirren und fragen ob denn jetzt wal was für sie zu tuen ist find ich nicht so prickelnd, zumal die Verbindung so oder so die meiste Zeit ruht. Sie muß nur gehalten werden weil am anderen Ende GPRS-Teile sitzen denen so ab und zu mal was geschickt werden muß, die aber wegen GPRS halt nicht direkt erreichbar sind.

Fällt irgendjemand dazu ne Lösung ein? Z.B. einfach nur an den Verbindungen lauschen und erst dann nen Thread abspalten wenn wirklich Daten kommen?
Gruß
UweR
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Viele permanente IP-Verbindungen parallel handeln

  Alt 17. Aug 2007, 13:50
Hi, der server etabliert doch seperate Socket-Objekte für jede Verbindung. Bei tausend Verbindungen bestehen do sowieso schon 1000 SocketInstanzen. Leg doch die Nachrichten in eine warteschlange und lass sie abarbeiten. wenn dein Rechner damit überfordert wird, dann ist an der Stelle eh alles zu spät.
Ich sehe das Handling weniger als das Problem. Das tritt ab einer bestimmten Menge von Verbindungen dann sowieso auf.

Warum und aus welchem Grund hast denn Sorgen?

Gruß oki
42
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Viele permanente IP-Verbindungen parallel handeln

  Alt 17. Aug 2007, 14:31
Wie wäre es mit einem Thread-Pool?
Prinzip: ein Pool von Threads (z.B. 20 Stück) versucht ständig, eine Job-Liste abzuarbeiten.
Bei leerer Job-Liste legen sich die Threads schlafen, bis sie durch neue Jobs aufgeweckt werden.
Angenommen, du hast 80 Anfragen "gleichzeitig", dann werden 80 Jobs in die Liste eingetragen.
Im Durchschnitt verarbeitet jeder Thread dann 4 Jobs, bis die Liste leer ist.

http://www.delphipraxis.net/internal...t.php?t=111982
Andreas
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#4

Re: Viele permanente IP-Verbindungen parallel handeln

  Alt 17. Aug 2007, 14:52
@Oki:
Das er mir die Socketobjekte erstellt ist schon klar, aber der Indy-server erstellt mir aber noch für jeden Socket einen eigenen Thread der natürlich auch schon mal seine Rechenzeit bekommt. Wenn ich alle Sockets über einen Thread abfragen würde gäbe es zwar wahrscheinlich schon mal Wartezeiten pro Socket, aber die kann ich verkraften.

@shmia:
Die Idee mit dem Thread-Pool war mir auch schon gekommen.

Die Frage ist nur wie kann ich meinen Indy-Server davon abhalten für jede Verbindung einen eigenen Thread abzuspalten bzw. gibt es ne andere Komponente die sich besser eignet.
Gruß
UweR
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf