Eine Frage der (Daten-)Übertragung

Für allgemeine Fragen zur Programmierung mit PureBasic.
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Eine Frage der (Daten-)Übertragung

Beitrag von sbehrens »

Hi Leutz,
wie sollte man z. B. bei einem Chat-Programm die offenen Chat-Räume übertragen?
Sollte man

Code: Alles auswählen

"ROOM.Allgemein|unter 18|Über 18"
oder

Code: Alles auswählen

"ROOM.Allgemein"
"ROOM.Unter 18"
"ROOM.Über 18"
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
enjoy life... while you can!
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag 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.

Code: Alles auswählen

"ROOM.Allgemein"
"ROOM.Unter 18"
"ROOM.Über 18"
schicke, kommt auf der anderen

Code: Alles auswählen

"ROOM.AllgemeinROOM.Unter 18ROOM.Über 18"
in einem Batzen an.
Wie kann man das verhindern?

mfG
Basti
enjoy life... while you can!
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag 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
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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 ;)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

@Deeem2031: War wohl wirklich schon etwas spät. Hab nicht gesehen, dass doch alles übertragen wird. Ich glaube, ich schlaf erstmal aus :coderselixir:
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag 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 :freak:

Thx!

mfG
Basti
enjoy life... while you can!
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8820
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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à.
Antworten