Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 19:31

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Mai 20, 2003 09:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Hi,

also ich glaube die Frage kannst du dir am Besten beantworten.

Und zwar hängt das davon ab was du bei einem Verbindungsaufbau machst.
HTTP zum Bleistifft. Verwendet in 99,9% aller Fälle keine permanente Verbindung. Muss es ja auch nicht. Da ein Client ein Request schickt und der Server darauf antwortet. Bei FTP ist das aber auch schon wieder etwas anderes. Du hast da eine Anmeldung und einige andere Statusrequests. Deswegen ist da die Verbindung permanent. Bei HTTP ist es zum Beispiel tötlich sehr viele kleine Dateien (Bilder) zu übertragen. Weil jedes Mal ein Header mitgeschickt werden muss. Und der kann teilweise größer als das Bild sein. Somit würdest du 3-4 Mal so viel übertragen als überhaupt Daten vorhanden wäre.

Aber jetzt mal wieder zu deiner Frage. Meiner Meinung nach kannst du den Vebindungsaufbau per TCP/IP (indy) vernachlässigen. Also die Zeit dafür. Es sei denn du muss dich bei jeder neuen Verbindung beim Server anmelden. Und dann solltest du auch beachten, wie oft du eine Verbindung aufmachen müsstest. Wenn du alle 1-2 Minuten eine Verbindung aufmachen musst, dann spielt die Zeit für die Anmeldung (incl. verbindungsaufbau) auch keine Rolle mehr. Wenn du aber alle 100 ms eine Verbindung benötigst, dann macht es schon mehr Sinn die Verbindung aufrecht zu erhalten. Auch wenn du überhaupt keine Anmeldung hast.

Zusätzlich sollte du die Zukunft auch nicht außer acht lassen. Kann es in naher Zukunft passieren, dass du dich anmeldenn musst(wenn das jetzt nicht schon der Fall ist)? Oder kann es passieren, dass evtl. mehr (und öfters) Daten übertragen musst (wg größerem Datenvolumen)? Und wenn so etwas sein kann macht es Sinn schon jetzt die permanente Verbindung einzubauen. Dann hast du einen späteren Umbau nicht.

Ich hoffe das hat dir jetzt etwas geholfen auch wenn es keine Konkrete Antwort auf deine Frage war.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mai 21, 2003 11:42 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
So genau kann ich dir das gar nicht sagen.
Ich weiß nicht, ob die Indykomponenten für ein WriteInteger (oder WriteLN, etc.) gleich ein ganzes Paket losschicken. Wenn das der Fall sein sollte, dann ist das nicht wirklich Optimal. Eine andere Möglichkeit deine Daten zu versenden wäre alles in einen Stream zu packen und den Stream am Stück zusenden. Allerdings weiß ich nicht von welchen Datenmengen wir jetzt hier reden. Falls es 6-7 Zeilen sein sollten, dann ist es recht egal. Aber um so größer die Datenmenge wird um so mehr muss du dir dann einfallen lassen.

Aber was du auf jeden Fall mal machen kannst, wären 2 kleine Anwendungen. Ein Server und ein Client. Die benutzen die Komponenten und sobalt der Client sich mit dem Server verbindet schickt der Server mal ein paar Testdaten (Mindestens das womit du an Datenvolumen rechnen musst. Besser das 2 o. x fache). Es spielt ja keine Rolle um was es sich dabei handelt. Hauptsache ist ja, dass du mal die Zeiten siehst. Ach ja un der Client misst dann logischerweise die Zeit und gibt es aus. Und dann kannst du ja ausprobieren welche Methode die schnellst ist. Da musst du einfach mal ein bissel mit rumspielen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mai 23, 2003 06:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Jau. Das ist alle mal eine Möglichkeit. Aber was ist, wenn ein Client 3 jetzt ankommt und gerne den Inhalt der Blub.txt verlangt. Der muss dann so lange warten, bis der Client2 sein bla.txt gelsen hat und das obwohl der vollkommen losgelöst von allem anderen ist. Oder mehrere die gleiche Datei lesene wollen.

Das sicherste und üblichste ist, wenn du nur die gemeinsam genutzen Speicherbereiche (bla.txt) schützt.

Dafür gibt es wieder viele unterschiedliche Möglichkeiten. (siehe Threadtutorial)
Eine Möglichkeit, die mir am frühen Morgen ohne Kaffee einfällt, wäre. Du machst dir eine Klasse in der du deine Dateien verwaltest. Sprich jedesmal, wenn irgend jemand etwas von einer Datei haben will, dann geht das über diese Klasse. (Recht einfach über FileStreams zu lösen.) Wenn jemand diese Datei schon offen hat muss der andere so lange warte. Will dann aber jemand etwas von einer anderen Datei (die nicht gelockt ist), dann rauscht das einfach so durch.
Allerdings weiß ich auch nicht genau um wie viele Dateien es sich handeln. Wenn du eh nur eine hast, dann kannst du dir den ganzen Aufwand sparen. Dann würde eine einfache Critical Section ausreichen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]