how to programmatically start 3g connection on iphone?
do I need to use socket api?
The iPhone SDK abstracts out (in most cases) your connection type. You cannot choose to use wifi vs 3G vs EDGE vs Bluetooth. It might be possible if the device is jailbroken, but it's not in the SDK.
As far as I'm aware, the only time you can explicitly use a certain kind of connection is when using the GameKit framework and it forces you to use a Bluetooth connection.