Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi 3 Clients senden Daten. Reihenfolge beim Server... (https://www.delphipraxis.net/134698-3-clients-senden-daten-reihenfolge-beim-server.html)

Jackie1983 27. Mai 2009 09:23


3 Clients senden Daten. Reihenfolge beim Server...
 
servus,

habe einen Server und 3 Clients. (Sockets)
Die 3 Clients C1,C2 und C3 senden Daten zum Server.

Jetzt sind die Daten größer und werden von den Sockets/Betriebsystem (?) aufgeteilt.
Wie kommen diese Daten an?

Angenommen die Pakete werden in zwei Teile aufgeteilt.
Kann es sein das beim Server dann die Daten durcheinander ankommen, also
Server <- C1.1 <- C2.1 <- C2.2 <- C3.1 <- C1.2
So müste ich ja noch schauen welches Paket zu welchen Client gehört.
Oder kommen erst die Daten von C1.1 C1.2 an dann die daten von C2.1 C2.2 etc... aber komplett....

Mfg

Berlinermauer 27. Mai 2009 09:28

Re: 3 Clients senden Daten. Reihenfolge beim Server...
 
Ich kann dir jetzt keine Genaue Auskunft geben,
aber dein gennantes Szenario kann schon sein, wenn einer der Clients zB ein langsameres Internet/ Computer hat.

Ich empfehle dir sowieso immer bei jedem Packet die ClientID mitzusenden

also zB #254 + ClientID + #254

Gargoyl 27. Mai 2009 09:34

Re: 3 Clients senden Daten. Reihenfolge beim Server...
 
Also der Server hat selbst ja dann auch 3 Sockets, für jeden Client eine eigene Socket. Und jede Socket auf dem Server empfängt nur die Daten seines Clients. Dein Server muss dann natürlich mit Threads arbeiten.

Client Socket CS1 bis CS3
und der Server hat Server Socket SS1 bis SS3
und SS1 empfängt die Pakete von CS1 in der Reihenfolge wie sie CS1 sendet.
und mit anderen Sockets analog. Da musst du am Server nix mehr umsortieren oder so.
Ich geh mal von aus das es eine TCP Verbindung ist. Diese sind Verbindungsorientiert. Bei UDP (Verbindungslos) kommen die Pakete natürlich wahllos an und du musst selber sortieren welcher Client was geschickt hat.

(Ich hoffe die reicht diese knappe Erkläuterung)

Jackie1983 27. Mai 2009 10:12

Re: 3 Clients senden Daten. Reihenfolge beim Server...
 
Zitat:

Zitat von Gargoyl
(Ich hoffe die reicht diese knappe Erkläuterung)

Das klärt schon mal einiges...

Zitat:

Zitat von Gargoyl
Also der Server hat selbst ja dann auch 3 Sockets, für jeden Client eine eigene Socket. Und jede Socket auf dem Server empfängt nur die Daten seines Clients. Dein Server muss dann natürlich mit Threads arbeiten.

Bis jetzt habe ich nur eine Jobliste (Thread). Hier werden alle Jobs nacheinander bzw. wie sie beim Server reinkommen abgelegt.
Der Thread arbeitet diese dann ab. Aber ich brauche doch nicht für jeden Client einen Thread oder?

Gargoyl 27. Mai 2009 11:08

Re: 3 Clients senden Daten. Reihenfolge beim Server...
 
Generell brauchst du pro Client der sich verbindet einen Thread. Ich weiß jetzt nicht mit welcher Komponente du arbeitest, da kann es ggf. anders sein. z.B. dass es einen Thread gibt mit einem Event dem auch die Socket übergeben wird von der die Daten kommen. Dann brauchst du auch keine Threads machen. Ohne zu wissen womit du arbeitest kann ich nix zu sagen.

Jackie1983 27. Mai 2009 11:58

Re: 3 Clients senden Daten. Reihenfolge beim Server...
 
Arbeite mit den Sockets, TServerSocket und TClientSocket.
Da gibt es ja OnSocketClientRead dort kommen die daten und der Socket an.
Diese Daten mit Socket speicher ich in EINER jobliste. Brauche also keine pro Client wenn ich das richtig verstehe.

Gargoyl 27. Mai 2009 12:09

Re: 3 Clients senden Daten. Reihenfolge beim Server...
 
richtig, in dem Fall brauchst du keinen extra Thread pro Client.

Jackie1983 27. Mai 2009 12:28

Re: 3 Clients senden Daten. Reihenfolge beim Server...
 
wunderbar....

thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 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