2016-03-24 3 views
1

Hier ist die Zusammenfassung, ich sende ein Paket von einem Server zu einem Client auf dem gleichen Computer ausgeführt. Aus irgendeinem Grund ist das gesendete Paket nicht dasselbe wie das empfangene Paket.Wie kann RakNet zuverlässiger werden?

Hier die Details:

Das Paket gesendet wurde RakNet mit der anrufenden Funktion:

rakPeer->Send(&bitStream, MEDIUM_PRIORITY, RELIABLE_ORDERED, 0, UNASSIGNED_RAKNET_GUID, true); 

Hier sind die ersten 10 Bytes des Pakets vom Server gesendet: 27,50 , 39,133,202,135,0,0,099 ... 1180 weitere Bytes

Hier sind die ersten 10 Bytes des Pakets vom empfangenden Client (Hinweis: 50% der Zeit ist es richtig, die andere Hälfte es ist das): 27,50,43,40,247,134,255,255,255,99 ... 1180 weitere Bytes

Das erste Byte ist ID_TIMESTAMP. Bytes 2-5 enthalten den Zeitstempel, den ich vermute RakNet irgendwie durcheinander bringt. Byte 6 ist die gepackte ID, die eindeutig geändert wird, sowie die folgenden 3 Bytes.

Mein Verdacht ist, dass der Fehler einige ist, wie durch die Länge des Pakets verursacht, da kleinere Pakete scheinen ohne nachweisbaren Fehler zu senden, jedoch verstehe ich RakNet automatisch Paketbeschädigung behandelt und intern das Paket spaltet, wenn es zu groß.

Jede Hilfe wird geschätzt.

Antwort

0

Nun für jeden, der das gleiche Problem hat, hier ist die Lösung.

RakNet-Zeitstempel sind je nach Buildkonfiguration 32 Bit oder 64 Bit. In diesem Fall habe ich 32-Bit-Zeitstempel mit einem 64-Bit-Build gesendet. Das ist ein Nein-Nein, da RakNet die Bits ändern wird, von denen er denkt, dass sie der Zeitstempel sind, um die relative Zeit zwischen Computern zu berücksichtigen.

Verwandte Themen