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.
Gleicher Code, nur UDP
Re: Gleicher Code, nur UDP
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Gleicher Code, nur UDP
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.
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.
Re: Gleicher Code, nur UDP
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.
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Gleicher Code, nur UDP
Sorry, das komisch war falsch gesetzt
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.