1、Socket和http的区别
http: 如何封装数据;基于TCP协议,简单的对象访问协议,对应于应用层;(货物)
tcp协议:数据在网络中的传输;对应于传输层;(卡车)
IP协议:对应网络层;数据在网络中的传输(高速公路)
TCP/IP:解决数据如何在网络中传输,HTTP:如何包装数据
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
Http连接:http连接就是所谓的短连接,及客户端向服务器发送一次请求,服务器端相应后连接即会断掉。
socket连接:socket连接及时所谓的长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该链接已释放网络资源。所以当一个socket连接中没有数据的传输,那么为了位置连续的连接需要发送心跳消息,具体心跳消息格式是开发者自己定义的
1.HTTP的长连接一般就只能坚持一分钟而已,而且是浏览器决定的,你的页面很难控制这个行为。
Socket连接就可以维持很久,几天、数月都有可能,只要网络不断、程序不结束,而且是可以编程灵活控制的。
2.HTTP连接是建立在Socket连接之上。在实际的网络栈中,Socket连接的确是HTTP连接的一部分。但是从HTTP协议看,它的连接一般是指它本身的那部分。
2、TCP UDP
TCP:(打电话)
(传输控制协议),面向连接,传输可靠(保证数据正确性)、有序(保证数据顺序),传输大量数据(流模式)
速度慢,对系统的资源要求多,程序结构较复杂。每一条TCP连接只能是点到点,首部开销20字节
UDP:(发短信)
(用户数据包协议)面向非连接,传输不可靠(可能丢包),无序,传输少量数据(数据报模式)
速度快,对系统资源要求少,程序结构简单,UDP支持一对一,一对多,多对一,多对多的通信方式,首部开销8字节
3、HTTP连接和Socket连接
HTTP连接:(短链接)
客户端发送请求,服务端响应请求,结束后主动释放连接——短链接
不需要任何数据时,也要保持每个一段时间向服务器发送“保持连接”的请求
Socket:对TCP和UDP的封装,是一个接口
4、Socket通信过程
通信过程:
5、实现基于TCP/IP协议的用户登录小程序