Another trick is to send the data not that often, but let the "client" calculate the new "positions" etc. by the last known values.
This is very useful if the client has to get values from many other mobile units (or players) via network.
When new packets arrive the actual values and positions are updated. There is really no need to send X and Y positions 100 times a second. send it e.g. 20 times and calculate the values between by the last known speed and angle. You can see this in recent games, for example "World of Warcraft". When a player gets a "lag" or disconnect, he seems to run against walls etc. But thats the way to make communication in multiplayer games fast enough for internet.

Greetings,
Dirk