zerochending
2012-09-06 16:47 阅读 207
已采纳

socket 还是 http

项目刚开始,手机的客户端需要和我的服务端做交互,经理让做个评估,我的要求是:消息及时,高并发,如果socket,在linux上单台提供的理论连接能有多少。http又有那些缺憾那~ 求个大牛分析

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • 已采纳
    cao_zp cao_zp 2012-09-06 19:08

    用Socket+Tcp长连接的优点
    1、协议可以自定义,用二进制协议,可以使流量消耗最小
    2、可以实现服务器向手机反向推的功能,这样手机得到的消息是最及时的。
    这个方案的劣势是
    1、Socket方案工作量大,需要自己定义传输的协议格式,自己实现编解码,控制心跳,解决TCP粘包,分包的情况
    2、手机耗电快,长时间的网络连接,可能2、3个小时就没电了。
    2、手机的网络情况复杂,进出电梯等都会丢失信号,此时需要实现很复杂的重连机制。另外手机的网络连接是通过电信运营商的网关的,网关一般不允许长时间的连接,每隔一个小时

    使用Http的优缺点差不多是和Socket的是相反的

    如果没有特殊的要求,建议使用Http接口

    点赞 10 评论 复制链接分享
  • xx753277 远方夕阳 2012-09-06 16:51

    socket虽然实时,但是耗电
    http间歇轮询 不实时 ,但是相对不费电

    点赞 评论 复制链接分享
  • jinnianshilongnian jinnianshilongnian 2012-09-06 16:57

    linux上单台提供的理论连接0xffff,因为它的类型是unsigned short所以最多支持怎么多,一般是支持到4096再多的话性能将下降.

    http简单相对实现简单。http也是走的socket 在tcp之上做的封装。
    socket连接可以减少网络销毁,但是需要在客户端/服务器间建立通信协议,解析数据比较麻烦。

    如果没什么必要,建议http,比如android提供了httpClient。

    如何交互,需要实时性很强吗?

    点赞 评论 复制链接分享
  • surelei surelei 2012-09-06 17:07

    由于现在有netty和mina之类的基于socket的网络开发框架,所以其实直接使用socket来通讯也不麻烦。

    点赞 评论 复制链接分享
  • weixin_42190416 weixin_42190416 2012-09-06 23:21

    可以看看我写的一个长连接推送框架,已经在最大的移动终端使用,具体网址:http://dragonsoar.iteye.com/blog/1567771

    点赞 评论 复制链接分享
  • wuliaolll wuliaolll 2012-09-07 08:22

    safari一些版本不支持web socket很头疼

    点赞 评论 复制链接分享

相关推荐