Seite 2 von 2

Re: Gleicher Code, nur UDP

Verfasst: 17.03.2016 00:01
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.

Re: Gleicher Code, nur UDP

Verfasst: 17.03.2016 23:02
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:

Re: Gleicher Code, nur UDP

Verfasst: 18.03.2016 00:35
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.

Re: Gleicher Code, nur UDP

Verfasst: 19.03.2016 15:07
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.