Gleicher Code, nur UDP

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7035
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Gleicher Code, nur UDP

Beitrag von STARGÅTE »

Sry für den doppel Post, aber ich möchte es einfach noch mal hervorheben:

TCP:
Laut Hilfe, darf die Länge (beim Senden und Empfangen) maximal 65536 Byte betragen.
Scheinbar ist es aber möglich durchaus größere Längen bei SendNetworkData() anzugeben, wobei ReceiveNetworkData trotzdem nur Stückweise die Daten empfängt. Hier nutzt PureBasic vielleicht die Tatsache, dass unter TCP die Reihenfolge der Pakete erhalten bleibt, große Datenmengen also Übertragen werden können, PureBasic jedoch selbst stückelt.

UDP:
Laut Hilfe, darf die Länge (beim Senden und Empfangen) maximal 2048 Byte betragen.
Hier ist es definitiv nicht möglich mehr als 2048 Byte zu senden.
Zwar gibt SendNetworkData() bei 2049 Byte noch 2049 zurück, aber empfangen werden diese nicht. Erst ab 65508 Byte gibt es tatsächlich eine -1 zurück. Vielleicht sollte PB hier die echte Gränze besser kontrollieren.
Da die Reihenfolge unter UDP nicht gewährleistet ist, kann PB hier nicht selbst den Speicher stückchenweise übertragen, da der User selbst Sachen hinzufügen muss, die die Reihenfolge untersuchen.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: Gleicher Code, nur UDP

Beitrag von Moxl »

Schonmal Danke für die Antworten.

Ich will ja so eine Art Stream mit UDP basteln da mir es mit TCP zu langsam läuft.

@Stargate
Ja die erfahrung habe ich auch gemacht, dass man mit SendNetworkData() auch mehr als 65536 senden kann.
Aber mit UDP kann man nicht mehr als 2048 Bytes senden.

Wenn man jetzt ein Bild mittels UDP sendet was kleiner als 2048 Bytes ist, funktioniert es. Komisch. :freak:
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7035
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Gleicher Code, nur UDP

Beitrag von STARGÅTE »

Wieso komisch?
So ist halt das Protokoll.
Wenn du einen Stream mit UDP realisieren willst (was ja durchaus richtig ist) muss du damit rechnen, dass nicht alle Pakete (2048 Byte) ankommen. Beim streamen ist es aber auch nicht notwenig, da es ja eh fortlaufende Daten sind.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: Gleicher Code, nur UDP

Beitrag von Moxl »

Sorry, das komisch war falsch gesetzt :lol: das bezog sich eher auf
Ja die erfahrung habe ich auch gemacht, dass man mit SendNetworkData() auch mehr als 65536 senden kann.
Aber mit UDP kann man nicht mehr als 2048 Bytes senden.
Antworten