You will probably need to micro-manage the 3G modem to ensure that you don't have delays while it switches power modes. Your simple answer is make sure you send at least one packet larger than 128 bytes every 6-8 seconds. If you can guarantee that all your packets are smaller than 128 bytes make sure you send something once every 6-8 seconds. Avoid, at all costs, switching between 3G power states in a game as you will be cut off for 2.5 seconds while the transition occurs.
My Packets Are All Smaller Than 128 Bytes
Have a timer kick off every 6 seconds or so. If no packet has been sent since the last timer event, send a small heartbeat packet (4 bytes is probably safe).
If you sometimes need to send large data you could queue it up for temporary jumps to DCH.
Turn OFF Nagling if you are using TCP.
My Packets Could be Larger Than 128 Bytes
Have a timer kick off every 6 seconds or so. If no packet has been sent since the last timer event, that is at least 128 bytes; send a large heartbeat packet (196 bytes is probably safe).
Turn ON Nagling - if acceptable (i.e. your game is not real-time).
2.5s Delay is Acceptable
This is probably your case.
Do nothing special. Just make sure that your UI is ready for something like this (i.e. ensure it supports background workers/async).
Taken from the rather good XMPP mobile recommendations. Keep in mind these are not set in stone, and are up to the network operator - you can get feedback about this from the phone on some platforms:
connections but no data, ~8mA
This mode is used when connections are not actively sending/receiving data.
<= 128 bytes per packet, ~140mA
This mode is used when the packet queue remains smaller than 128 bytes for 8s. It takes 2.5s for your cellphone to move from idle to FACH.
> 128 bytes per packet, ~380mA
This mode is used when one or more connections are sending packets larger than 128 bytes at least once every 8 seconds. It takes 2.5s for your cellphone to move from FACH to DCH.