Socket和Http之间的区别,选取长连接和短连接
socket和http的区别
Http协议:简单的对象访问协议,对应于应用层。Http协议是基于TCP链接的。
TCP协议:对应于传输层
IP协议:对应与网络层
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而Http是应用层协议,主要解决如何包装数据。
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我
们才能使用TCP/IP协议。
Http连接:http连接就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。
socket连接:socket连接及时所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该链接已释放网络资源。所以当一个socket连接中没有数据的传输,那么为了位置连续的连接需要发送心跳消息,具体心跳消息格式是开发者自己定义的。
Http连接
Http协议即超文本传输协议,是Web联网的基础,也是手机联网常用的协议之一,http协议是建立在TCP协议之上的一种应用。
Http连接最显著的特点是客户端发送的每次请求都需要服务器回送相应,在请求结束后,会主动释放连接,从建立连接到关闭连接的过程称之为“一次连接”。
a》在HTTP1.0中。客户端的每次请求都要建立一次单独的连接,在处理完成请求后,就自动释放连接。
b》在HTTP1.1中则可以在依次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后在发送下一个请求。
由于Http在么次请求结束之后都会主动释放连接,因此HTTp协议连接是一种短连接,要保持客户端程序的在线状态,需要不断的向服务器发起连接请求,通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”,若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已断开。
建立socket连接
建立socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket,另一个运行与服务器,称为ServerSocket。
套接字之间的连接分为三个步骤:服务器监听、客户端请求、连接确认。
服务器监听:服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
客户端请求:至客户端的套接字提出连接请求,要练级的目标是服务器端的套接字,为此客户端的套接字必须首先描述他要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后向服务器端套接字提出连接请求。
连接确认:当服务器端套接字监听到或者说接收到客户端的套接字连接请求是,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式链接链接,而服务器端 套接字继续处于监听状态,继续接受其他客户端套接字的连接请求。
如有错误欢迎指正