Autor Beitrag
darius83
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 25.08.12 00:23 
Huhu,

ich wollte nur mal kurz was zu den Indy-Kompos fragen. Ich hoffe ihr könnt mir da weiterhelfen ;)

Also es geht um die TIdTCPClient bzw. TIdTCPServer.
Ich habe damit mal Teile des Netzwerk-Tutorials von Narses nachgebaut, hab aber ein paar Fragen zu der Übertragung der Daten...

Wenn ich z.B. die Protokollversion überprüfen möchte, kann ich dann die Daten nur zusammen übertragen, oder wäre es auch möglich, diese einzeln nacheinander zu übertragen? Ich habs momentan so, dass
1. Der Befehl als Integer
2. Die Versionsnummer als Integer
3. Die Subversionsnummer als Integer
4. Textlänge des nachfolgenden Strings als Integer
5. Protokollname als String
(Ich wandle den String vorher in TIdBytes und sende diese dann... Natürlich auch die entsprechende Länge dazu.)
und zwar nacheinander jeder Teil in einem eigenen Sendebefehl.
Jetzt hab ich mich aber gefragt, ob es theoretisch möglich wäre, dass dadurch Daten von anderen Clients dazwischenrutschen und ich beim Server dann überprüfen muss, von wem das Paket gekommen ist, oder ob das so überhaupt funktionieren kann... Ich teste es ja momentan nur alleine auf meinem Laptop und da klappt es so ohne Probleme...
Aber ich vermute mal, dass es besser wäre, alles zusammen in einem einzigen Datenblock zu senden, oder?

Wäre nett, wenn ihr mir da weiterhelfen könntest.
LG Darius

Edit1:
Ich möchte quasi wissen, was bei der TCP Kommunikation mit Indy-Komponenten oder überhaupt generell besser ist,
mehrere Write-Befehle hintereinander oder besser alles zusammen in einem einzigen Write-Befehl und falls man mehrere benutzt, ob man dann den Absender überprüfen muss, bzw. es möglich ist, dass ein Write-Befehl eines anderen Clienten beim Abarbeiten beim Server dazwischenrutschen kann...

Ich hoffe, dass ihr mich so verstanden habt XD
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Sa 25.08.12 22:02 
Moin!

Da ich mich von den Indy-Kompos fernhalte, wenn ich kann, bin ich sicher nicht der Experte dafür. :nixweiss:

Allerdings:
user profile icondarius83 hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt hab ich mich aber gefragt, ob es theoretisch möglich wäre, dass dadurch Daten von anderen Clients dazwischenrutschen und ich beim Server dann überprüfen muss, von wem das Paket gekommen ist,
Das kann ganz sicher nicht passieren, da du im IdTCPServer für jeden Client einen eigenen Thread hast (und dahinter einen eigenen Socket). :idea:

btw: Das ist aber doch auch schon beim TServerSocket so (die separaten Verbindungen), sollte jetzt also nicht soo sehr verwunden. :zwinker: Abgesehen davon: wer sollte jemals mit dem Datensalat fertig werden, wenn im Server von allen Clients die Daten in einer einzigen Connection wieder raus kämen. :hair:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.

Für diesen Beitrag haben gedankt: darius83
darius83 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: So 26.08.12 20:08 
Ok danke dir Narses, dann brauch ich mir darum ja keiune Sorgen zu machen...
Wie steht es denn bei den Indys mit unvollständigen Paketen?
Also was passiert z.B. wenn ich einen String mit 32 Bytes abrufen will und der Abruf gestartet wird, wenn erst 17 Bytes angekommen sind? Wartet der Server dann auf den Rest?

LG Darius83