分享

Http和Socket区别

 一世的追逐 2016-05-29

近期在做android中的vpn连接效果,有第三方提供的sdk包,供参考。但是里面有分支,HTTP和Socket连接。于是乎,对于网络这块不是很清晰,只会用的我,选择去网上查看了下具体的一些区别理论概念。

   总结就是Http和Socket都是基于底层TCP/IP协议的。不同在于其处理方式的差异。
   Http是基于TCP/IP的应用层,而Socket可以说是TCP/IP的封装。我们在编程时,如果是在应用层编码,常常使用的是Http协议来发起请求,获取数据,然后就结束连接。如果是我们希望一对一或者说是客户端和服务器间的长期消息发送,如实时聊天等这些,就需要使用Socket,ServerSocket来处理。 

   简单说,是HTTP偏向于表层的处理,Socket偏向于底层的处理。Http是客户端请求服务器回应,你表现出一点意图,我就立马回应的效果,结束后就各回各家的短暂动作。Socket是服务器发送消息,客户端接收,也可以客户端发送消息,服务器接收。这种持续的动作。

下面贴上网上看的其他网友的认识:

 
网友一:
通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

 

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

 

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。



网友二:

HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。

Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多