Autor Beitrag
NemesisoD
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 43



BeitragVerfasst: Mi 06.08.03 13:35 
Ich habe eine Frage, ich will ein Netzwerkprogramm schreiben, auf den sich mehrere (theoretisch mehr als 100) Clienten anmelden können. Da es aber immer eine gewisse Zeit braucht bis sich ein Soket angemeldet hat frage ich mich wie man das ganze Optimieren kann.

Ich habe mir auch schon gedanken gemacht:

Das Programm erhält zur Zeit einen Befehl über netzwerk (z.B. berechte das Produkt von 4 und 5) diese Prozedure führt er nun aus, und sendet die Antwort zurück und lässt erst dann die nächste anmeldung zu. Deshalb, wäre es mäglich eine Art Speicher zu schreiben, der etwa zu funktioniert:

Client meldet sich an und sendet Befehl
Server speichert den Befehl und trennt verbindung wieder,
so dass sich ein neuer Client anmelden kann.
Und eine Procedure überwacht und verteilt die Befehle mit den einzelnen Clientadressen(damit das Programm auch weiß, was er an wen schicken soll).

Das ist die Theorie, aber ich weiß nicht wie ich das in die Praxis umsetzen kann!!! Könnte mir dabei wohl jemand helfen?

_________________
Wer nicht programmiert, der lebt nicht!
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 06.08.03 16:32 
Die Frage war ursprünglich UDP oder TCP. Bei deinem vorhaben (das im übrigen sich sehr nach distributed computing anhört) würde ich dir UDP empfehlen. Du kannst mittels der Indy Library auch bei UDP eine Empfangsbestätigung erhalten. Somit ist UDP eine sichere Sache und schneller als TCP.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 06.08.03 19:49 
ich würd das Protokoll erstmal ausser acht lassen (man kann ja auch pipes nehmen) sondern erstmal gedanken machen wie sowas umzusetzen sei.
IMHO kommt hier nur infrage, jede Clientanfrage in Threads zu beantworten, alles andere macht keinen Sinn. Sequenzielle Anfragen und Antworten kosten so hohe Laufzeiten und sind auch nicht das gelbe vom Ei sozusagen, gerade weil Netzwerkverbindungen eh asynchron ablaufen.

Leider sind 100 Threads kein Pappenstiel und ein 08/15 System geht da in Knie (win9x geht dann erstmal nach nirwana).

Was sollen denn die Clients und der Server überhaupt machen ?

grez
msch
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Mi 06.08.03 23:10 
Du musst ja keinen eigenen Thread pro Client erstellen. Unter Win9X kannst du ohnehin nur 16 Threads pro Prozess laufen lassen.

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind