I’m designing an application that will target android and iphone at the same time.
The application will transfer lot of data on full duplex channel. If this application were only targeting WIFI users, I would have chosen a “custom” application protocol. Unfortunately I need to support 3G, and I have heard about lot of users complaining that an application using some “custom” application protocol (on top of TCP or UDP ) is not working. It seems that is is a common practice from the cellphone carriers to only allow connection to “well-known” ports (e.g. 80,443).
What are your recommendations?. Shall I base my application protocol on top of HTTP to avoid this kinds of “firewall-like” problems ?
Even though it’s impossible to answer the question with certainty for every 3G network out there, I think you should not have firewall problems by using protocols other than HTTP/S.
If your protocol needs to be persistent with a socket stream sending and receiving information during a long time period, I would not use HTTP. I would use some custom protocol or some XMPP extension.
On the other hand, if you just need to send and receive information for brief periods of time, HTTP is ideal (a lot of CLIENT and SERVER SIDE support, easier to implement).