通过总结项目中socket的使用经验和对比jdk各种第三方源码,阐述下自己的理解,不对的欢迎指正:
1.在一般的android开发中,调用的各种实现所谓的http连接的api(包括java自带的httpurlconnection)其底层基本上都是调用的jdk的socket接口。
2.socket是基于tcp/ip协议封装的一套实现tcp连接的接口,或者说是工具。
3.基于以上两点,可以解释为什么有人会说其实http也是通过socket来实现的这种看似没有问题但又含糊不清的说法。
4.http只是一种协议,什么请求头,请求题,响应头都是根据固定的格式制定的报文,然后,然后最终(因为可能不直接调用socket的api接口而是用的其他第三方工具,比如volley,okhttp等)都会通过socket接口将这些报文发给服务器或者客户端。