1

Here's the summary, I send a packet from a server to a client run on the same computer. For some reason the packet sent is not the same as the packet received.

Here's the details:

The packet was sent using RakNet with the calling function:

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

Here are the first 10 bytes of the packet sent by the server: 27,50,39,133,202,135,0,0,0,99 ... 1180 more bytes

Here are the first 10 bytes of the packet as seen by the receiving client (Note: 50% of the time it is right, the other half it is this): 27,50,43,40,247,134,255,255,255,99 ... 1180 more bytes

The first byte is ID_TIMESTAMP. Bytes 2-5 contain the time stamp, which I presume RakNet messes with somehow. Byte 6 is the packed ID which is clearly changed, as well as the following 3 bytes.

My suspicion is that the error is some how caused by the length of the packet, as smaller packets seem to send without any detectable errors, however I understand RakNet automatically handles packet corruption and internally splits the packet if it is too large.

Any help is appreciated.

Marko Popovic
  • 3,999
  • 3
  • 22
  • 37
Evan Baad
  • 91
  • 5

1 Answers1

1

Well for anyone who has the same issue, here is the solution.

RakNet time stamps are 32 bit or 64 bit depending on your build configuration. In this case I was sending 32 bit timestamps using a 64 bit build. That is a no-no since RakNet will change the bits it thinks are the timestamp to account for the relative time between computers.

Evan Baad
  • 91
  • 5