对于有过网络编程经验的开发者来说,使用何种数据传输层协议来实现数据的通信,是个非常基础的问题,它涉及到你的第一行代码该如何编写。
从PC时代的IM开始,IM开发者就在为数据传输协议的选型争论不休,隔一段时间就能在社区里看到)。到了移动互联网时代,鉴于移动网络的不可靠性等特点,再加上手机的省电策略、流量压缩等,为这个问题的回答增了更多的不确定因素。
对于有选择困难证的人来说,基于以上因素,加上UDP和TCP协议的本质差异,这样的选择确实很纠结。
UDP vs TCP
TCP还是UDP?长连接如何实现?如何实现心跳机制?心跳的间隔如何确定?这些问题都是讨论移动端IM、消息推送等类似话题时,几乎一定被问到的问题。这里尝试正本清源一下。
互联网、移动互联网网络环境
在分析到底应该使用UDP还是TCP之前,有必要先讨论一下互联网与移动互联网的网络环境特点。
互联网的网络基础建设,经过十几年长期的发展,已经较为稳定和成熟,PC终端、操作系统的能力也达到了较高的水平。
而移动互联网,由于涉及到无线电话网络基站、2G、3G和4G技术的不断发展,其稳定性、带宽、资源分配等各方面虽日趋完善,但当前终究还有不少问题的存在。另外,由于移动互联网其“移动”的本质,加上智能终端设备(智能手机、平板电脑)的发展较晚,目前还在不断演变的情况,与互联网相比,移动互联