Seite 1 von 2
Eine Frage der (Daten-)Übertragung
Verfasst: 24.03.2005 00:48
von sbehrens
Hi Leutz,
wie sollte man
z. B. bei einem Chat-Programm die offenen Chat-Räume übertragen?
Sollte man
oder
an den Client schicken? ("ROOM." ist der 'identifier' für die Art der Daten die geschickt werden, in diesem Beispiel Chat-Räume)
Anders: Sollte man alle Informationen in einem Batzen schicken, oder sollte man die Informationen lieber aufteilen? Was ist weniger Fehleranfällig?
mfG
Basti
Verfasst: 24.03.2005 01:30
von Laurin
Auf die Fehleranfälligkeit brauchst du eigendlich nicht zu achten. Soweit ich weiß, übernimmt das das TCP/IP-Protokoll.
Ich persönlich, würde alles in einem Batzen übertragen.
Greetz Laurin
Verfasst: 24.03.2005 01:49
von sbehrens
Ich dachte eher an die Fehleranfälligkeit die man vom Denken/Programmieren her falsch macht.
Ich sende die Daten jetzt in einem Batzen, da ich bei den einzelnen Packets ein Problem hatte:
Wenn ich von der einen Seite z. B.
schicke, kommt auf der anderen
in einem Batzen an.
Wie kann man das verhindern?
mfG
Basti
Verfasst: 24.03.2005 03:19
von Laurin
Öhm.. bist du sicher, dass du deine Übertragungsprozeduren richtig programmiert hast?
Da scheint ein Fehler(?) drin zu sein. Normalerweise müsste er alles übertragen, was du losschickt - auch doppelte Zeichenketten (zB "ROOM.").
Greetz Laurin
Verfasst: 24.03.2005 04:25
von Deeem2031
Laurin, was erzählst du denn da schonwieder... vielleicht solltest du so spät nichts mehr posten
@ptI: Es ist normal das Strings die du einzeln versendet hast zusammen gesetzt ankommen. Dasswegen sollte man an jeden String ein Trennzeichen anhängen. Dazu nehmen zwar die meisten Chr10 oder Chr13, ich würde dazu allerdings Chr28 bis Chr31 benutzen, weil diese auch als Seperator gekennzeichnet sind.
Verfasst: 24.03.2005 11:00
von pogi02
Hallo
Also ich hab da eine bessere Lösung.
Schreib alle öffenen Räume in eine Datei z.B room.txt diese schickst du an alle Clienten natürlich musst du auch eine Funktion im Clienten schreiben der diese Datei empfängt. Dann lässt du diese Datei auslesen und hast die Offenen Raume
Damit sendest du auch alles auf einmal

und hast nicht sonderlich viele Probleme
Ich hab das bei meinen Chatprogramm mit der Online liste (wer alles Online ist) gemacht und des klappt super.
MfG pogi02
Verfasst: 24.03.2005 14:06
von Deeem2031
Die Methode ist ja auch nur ein bischen langsamer und resourcenfeindlicher...
Mit Files sollten es wirklich nur die Leute versuchen, die zu faul sind die Comps und Netzwerke der User ein bisl zu schonen

Verfasst: 24.03.2005 14:44
von Laurin
@Deeem2031: War wohl wirklich schon etwas spät. Hab nicht gesehen, dass doch alles übertragen wird. Ich glaube, ich schlaf erstmal aus

Verfasst: 25.03.2005 00:09
von sbehrens
Danke erstmal für eure Antworten
Deem2031 hat geschrieben:@ptI: Es ist normal das Strings die du einzeln versendet hast zusammen gesetzt ankommen. Dasswegen sollte man an jeden String ein Trennzeichen anhängen. Dazu nehmen zwar die meisten Chr10 oder Chr13, ich würde dazu allerdings Chr28 bis Chr31 benutzen, weil diese auch als Seperator gekennzeichnet sind.
Mist, ich habe schon gehofft das man das anders umgehen kann, da ich ziemlich faul bin. Naja, dann muss ich das halt noch implementieren
Thx!
mfG
Basti
Verfasst: 25.03.2005 05:33
von NicTheQuick
Ich mache das normal so, dass ich zuerst 4 Bytes als Long schicke, wo die Länge des nachfolgenden Datenpaketes - in dem Fall String - drin steht. So kann er die einzelnen Pakete wunderbar auseinander halten.
Man schreibst sich einfach zwei kleine Procedures zum Senden und Empfangen und Voilà.