NAT Hole Punching application for the Android
Relay server runs on the public server
ClientOneNat is on the client mobile phones which are going communicate with each other. Both client apps should register with the server and then talk to each other. Based on the behaviour of the NAT at the serverice provider result may be change. Refer the paper "TCP Hole Punching" for more details.