ZK安卓开发工具箱Android知识Android开发

记录自己对Socket,Http的理解

2017-02-23  本文已影响144人  HarryXR

不管Java还是Android的网络编程必然涉及到Socket,Http,下面就谈谈自己的理解。
本文不涉及网络通信7层协议,感兴趣的读者可以自行百度。

Socket

Socket,也叫套接字,它是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元(书上就这样说的),它是网络通信过程中端点的抽象表示,包含进行网络通信必须的5种信息:连接使用的协议,本地主机的IP地址,本地进程协议端口,远程主机的Ip地址,远程进程的协议端口。

Http协议

Http协议是建立在TCP协议上的一种应用。
在HTTP1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。

对比

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

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

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

上一篇 下一篇

猜你喜欢

热点阅读