Seite 2 von 2
Verfasst: 15.11.2004 18:24
von Lars
Das mit den Buffern ist so nicht ganz richtig, RaVen. Da es schonmal
vorkommt, dass man einen gesendeten String nicht als ein Stück,
sondern als mehrere empfängt, braucht letztendlich doch jeder Client
einen eigenen Buffer.
Wie groß der allerdings ist, ist Ermessenssache und hängt davon ab, was
für Daten man erwarten darf. Für einen Chat sind 1000 Bytes wohl dicke
genug, für ein Bytecode Protokoll reichen evtl. auch 10 Bytes. Das ist also
eine Art "Designfrage", genau wie die Größe eines Tiles bei Spielen.
Verfasst: 15.11.2004 18:37
von RaVeN99
@Lars:
Wie gesagt, ich hab mir das ganze so zusammengereimt, naja wieder n bissel schlauer geworden

Hmmm...
Die Info kommt auch wirklich keinen Tag zu spät, da ich derzeitig ein Projekt am laufen habe was eben viel mit Netzwerkcode hantiert und da nur einmal nen Buffer festlegen lasse... *zurückansreißbrett*
Nur damit ich das richtig verstehe, das Bytecode Protocoll iss doch effektiv dafür da die übermittelten befehle auszulesen oder?
(Hantiere zwar mit den ganzen sachen rum, aber effektiv nie wirklich was von Netzwerkprogrammierung gelernt, deswegen die dumme Frage)
Danke schonmal für die Antworten
Mfg
RaVeN
Verfasst: 15.11.2004 19:10
von Lars
Mit ByteCode Protokoll meinte ich ein eigenes Protokoll, dass nicht, wie z.B.
FTP oder HTTP die Befehle als für Menschen verständliche Strings (USER,
PASS, GET), sondern als einzelne Bytes verschickt. Das wäre dann etwa
für ein MMORPG ein Byte 03 gefolgt von einigen Bytes Parametern ein
Befehl, die Position eines Spielers zu verändern.
Was ich damit ausdrücken wollte, ist, dass man, um Befehle wie [c]RETR /
pics/Forum/PureBasic/Screenshots/Telnet.jpg[/c] zu empfangen einen
größeren Buffer braucht als für das angesprochene [c]03 225 16 0 0[/c].
Verfasst: 15.11.2004 19:25
von RaVeN99
Hört sich alles plausibel an ^^
Danke für die fixe Antwort
Mfg
RaVeN
Verfasst: 18.11.2004 18:34
von nco2k
und wie reserviert man am geschicktesten, für jeden einzelnen (neu hinzugekommen) user, einen eigenen speicherbereich, ohne den überblick zu verlieren??
c ya,
nco2k
Verfasst: 18.11.2004 20:04
von Lars
Du hast eine LinkedList der User, die strukturiert ist und dann halt den
Pointer zum Speicherbereich enthält, und wie viele gültige Bytes da im
Moment drin sind (so kannst du dann, wenn du eine Antwort parsed hast,
einfach das, was weiter hinten steht, nach vorne kopieren und die Anzahl
der gültigen Bytes modifizieren und musst dir keine Sorgen machen um
den Müll hinten dran.
In die Struktur kannst du natürlich noch andere tolle Dinge packen, wie
etwa die IP.
Verfasst: 18.11.2004 20:21
von MVXA
Bei den byteprotokoll würde ich nochmal mit dem 0 byte aufpassen (PB scheint da noch "paar" probleme zu haben, da mii dem Byte 0 ein ende des strings markiert wird. )
Verfasst: 18.11.2004 20:26
von Lars
LittleFurz hat geschrieben:Bei den byteprotokoll würde ich nochmal mit dem 0 byte aufpassen (PB scheint da noch "paar" probleme zu haben, da mii dem Byte 0 ein ende des strings markiert wird. )
Du sollst auch nicht das ByteProtokoll mit nem String auslesen
Warum liest du das nicht in nen Speicherbereich und dann per PeekB/Pointer?
Strings sind in PB Null-terminiert, das ist aber so weit nichts besonderes.
Verfasst: 18.11.2004 20:30
von MVXA
wollt ich trozdem erwähnen

außerdem kann ich in VB ein string mit 0 Byte zu spammen und trozdem einzelnd auslesen...
Verfasst: 19.11.2004 00:38
von nco2k
@Lars
danke, daß klingt sehr vielversprechend. ich werde mal schauen ob ich das irgendwie hinkriege.
falls aber jemand noch beispiele, zu diesem thema geben will, dann immer nur her damit, im codearchiv ist noch genügend platz.
c ya,
nco2k