Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Client / Server. Senden von Daten. Zwei Server? (https://www.delphipraxis.net/122818-client-server-senden-von-daten-zwei-server.html)

Thomas83 22. Okt 2008 14:53


Client / Server. Senden von Daten. Zwei Server?
 
Servus,

bei meiner Client / Server Anwendung sende ich vom Client alle 0.001 sekunden einen text zum server.
Vom server sende ich alle 0.001 sekunden einen text zu alle clients.

Wenn ein client senden will, sende ich vorher erst ein ping. Kommt ein pong zurück wird der text gesendet.

Jetzt wollte ich den chat mal "auslutschen" und starte 1 server und 50 clients.
Die Jobs sammeln sich, werden aber verarbeitet. Alles klappt soweit ganz gut.

Nur der Server bringt manchmal fehler, eher selten.
Genauso wie die Clients. Die Clients bringen ein paar Fehler und beenden sich anschließend.

Da ich aber alles per CriticalSection abgesichert habe, denke ich das eventuell das viele senden und empfangen zu problemem führt.

Deswegen wollte ich zwei Server einrichten. Einen nur fürs Senden und der andere zum Empfangen.
Was meint ihr?

thx

s.h.a.r.k 22. Okt 2008 15:00

Re: Client / Server. Senden von Daten. Zwei Server?
 
*schluck* *nochmal les* wie? jede millisekunde?!

Thomas83 22. Okt 2008 15:02

Re: Client / Server. Senden von Daten. Zwei Server?
 
ja genau, wollte halt mal die Extremsituation darstellen.
Denke so finde ich die meisten fehler.... das system an seine grenzen bringen..... oder nicht :gruebel:

DeddyH 22. Okt 2008 15:03

Re: Client / Server. Senden von Daten. Zwei Server?
 
Soll das eine DOS-Attacke werden? :shock:

s.h.a.r.k 22. Okt 2008 15:04

Re: Client / Server. Senden von Daten. Zwei Server?
 
ich halte das nicht wirklich für sinnvoll. diese zeit wird dir evtl. die probleme machen! was passiert, wenn du due zeit auf ca 0,5 sekunden erhöhst!?

Frankfurtoder 22. Okt 2008 15:04

Re: Client / Server. Senden von Daten. Zwei Server?
 
Zitat:

Zitat von Thomas83
ja genau, wollte halt mal die Extremsituation darstellen.
Denke so finde ich die meisten fehler.... das system an seine grenzen bringen..... oder nicht :gruebel:

Das hast du dann auch wohl geschafft.
Was passiert wenn du die Nachrichten noch langsamer versendest? Passiert es auch bei 1 Sekunde?
Was für Fehler bringen die Clients?

Thomas83 22. Okt 2008 15:05

Re: Client / Server. Senden von Daten. Zwei Server?
 
ne eigentlich nicht, wie gesagt möchte das system an seine grenzen bringen, nur so finde ich wo es später bei mehr zugriffen schwächelt.....

Zitat:

Zitat von s.h.a.r.k
ich halte das nicht wirklich für sinnvoll. diese zeit wird dir evtl. die probleme machen! was passiert, wenn du due zeit auf ca 0,5 sekunden erhöhst!?

werde es mal mit 0.5 sekunden probieren.....

inherited 22. Okt 2008 15:07

Re: Client / Server. Senden von Daten. Zwei Server?
 
Könntest du uns außerdem noch die Fehlermeldungen geben?

s.h.a.r.k 22. Okt 2008 15:07

Re: Client / Server. Senden von Daten. Zwei Server?
 
was ist sinn und zweck deines "an die grenzen bringen"? beachte, dass du mit criticalsections andere aussperrst und das ziemlich zeit kosten kann. daher evtl. deine fehler.

wie instant müssen denn nachrichten versendet werden? ich denke nicht, dass du das derart schnell brauchst, wie du es willst. ich würde es auch komplett von der zeit abkoppeln. schicke halt einfach nachrichten mit zeitstempel und dann alle nacheinander.

Thomas83 22. Okt 2008 15:14

Re: Client / Server. Senden von Daten. Zwei Server?
 
Zitat:

Zitat von Frankfurtoder
Passiert es auch bei 1 Sekunde?
Was für Fehler bringen die Clients?

Habe die Anwendung jetzt mit 100 Clients laufen und jede sekunde wird ein text versendet.
Bis jetzt ohne Probleme werder der Server noch die Clients mucken.
Der Client bringt: Zugriff verweigert....

Zitat:

Zitat von s.h.a.r.k
was ist sinn und zweck deines "an die grenzen bringen"?

Jetzt melden sich 20 Clients an und senden alle milisekunde einen text wenn das geht muss die Anwendung es auch schaffen bei 200 clients jede sekunde....
Möchte halt wissen wenn viele clients zugreifen ob das auch so funktioniert und das System nicht zusammenbricht.

Zitat:

Zitat von s.h.a.r.k
wie instant müssen denn nachrichten versendet werden? ich denke nicht, dass du das derart schnell brauchst, wie du es willst. ich würde es auch komplett von der zeit abkoppeln. schicke halt einfach nachrichten mit zeitstempel und dann alle nacheinander.

Brauche ich auch nicht, möchte es ja nur testen.
Per Timer sende ich zum Test jede milisekunde einen text, dieser wird dann gesammelt und versendet.

s.h.a.r.k 22. Okt 2008 15:35

Re: Client / Server. Senden von Daten. Zwei Server?
 
aber der test entspricht ja nicht dem wahren system, welche du implementierst, oder? ein client wird doch eine anfrage stellen und diese beantwortet bekommen? und nicht die ganze zeit "angeschrieen"? ;)

die reihenfolge bei deinen anfragen und vor allem die zeit ist doch egal. ein paar millisekunden hin oder her. wenn der server auf eine anfrage passend reagiert, dann bekommst so früh wie möglich deine antwort. an dieser stelle musst eben einen timeout einrichten.

zudem denke ich, dass du aufgrund deiner ciritcalsections in diesen fehler läufst. ich schätze, dass dein programm wo "rein rennt", obwohl es noch keine daten hat. diese kann es ja auch nicht haben, da der server mit noch anderen dingen beschäftigt ist. dies kann aber auch durchaus daran liegen, dass andere programme die cpu-zeit für sich beanspruchen oder deine server-software eben gerade einfach nicht die zeitscheibe hat. wenn es wieder an die reihe kommt, dann bekommst schon deine daten ;) zusammenklappen wird deine server-anwendung nun deswegen nicht, außer du programmierst echt mies *hehe*

Thomas83 22. Okt 2008 15:51

Re: Client / Server. Senden von Daten. Zwei Server?
 
Zitat:

Zitat von s.h.a.r.k
aber der test entspricht ja nicht dem wahren system, welche du implementierst, oder? ein client wird doch eine anfrage stellen und diese beantwortet bekommen? und nicht die ganze zeit "angeschrieen"? ;)

nein so nicht, wie gesagt habe es nur zum test gemacht, aber naja war anscheinend scheiße :stupid:
Der Client sendet seine daten zum Server, selten sendet der Server einen Antwort.
Hier und da sendet der Server dann auch einen Text

Zitat:

Zitat von s.h.a.r.k
die reihenfolge bei deinen anfragen und vor allem die zeit ist doch egal. ein paar millisekunden hin oder her. wenn der server auf eine anfrage passend reagiert, dann bekommst so früh wie möglich deine antwort. an dieser stelle musst eben einen timeout einrichten.

da keine antwort gesendet wird, brauche ich auch kein Timeout.... denke ich

Zitat:

Zitat von s.h.a.r.k
zudem denke ich, dass du aufgrund deiner ciritcalsections in diesen fehler läufst. ich schätze, dass dein programm wo "rein rennt", obwohl es noch keine daten hat. diese kann es ja auch nicht haben, da der server mit noch anderen dingen beschäftigt ist. dies kann aber auch durchaus daran liegen, dass andere programme die cpu-zeit für sich beanspruchen oder deine server-software eben gerade einfach nicht die zeitscheibe hat. wenn es wieder an die reihe kommt, dann bekommst schon deine daten ;) zusammenklappen wird deine server-anwendung nun deswegen nicht, außer du programmierst echt mies *hehe*

das denke ich auch mittlerweile. Habe jetzt zum Test 500 clients verteilt auf 3 computer gestartet. Funktioniert alles wunderbar. Konnte das Kabel ziehen. Server melder Clients ab. Stecke das kabel wieder rein und alle Clients habe sich wieder verbunden. Auch wenn ich den Server beende und wieder neu starte verbinden sich alle clients ohne Fehler :bounce1:

Bei sovielen Clients sammeln sich zwar die Jobs, nach einer Minute, ca 50.000 Jobs die noch zu verabeiten sind aber es past....


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz