1.什么是Socket
Socket即套接字,是应用层 与TCP/IP协议族通信的中间软件抽象层,表现为一个封装了TCP/IP协议族的编程接口。Socket不是一种协议,而是一个编程调用的接口,属于传输层接口,主要用来解决数据在网络种传输的问题。
通俗的理解,就是应用层无需关注这些协议的细节,只要按照Socket的接口进行编程,就可以直接使用TCP/IP协议族进行通信,主要有的协议有运输层的TCP、UDP,网络层的ICMP、IP、IGMP。
一个Socket实例唯一代表一个主机上的一个应用的通信链路。
2.Socket的建立过程
既然是通信,这里主要也是Android客户端到服务端的通信,所以分别来看客户端和服务端的具体实现。
1)客户端
-->创建一个Socket实例
-->操作系统将为该Socket分配一个未使用的本地端口号
-->操作系统创建一个含本地、远程地址、端口号的套接字数据结构(系统将一直保存该数据结构直到链接关闭)
-->在创建Socket实例的构造函数正确返回之前,进行TCP协议的三次握手
-->TCP握手协议完成后,Socket实例对象创建完成(否则会抛出IOException异常)
2)服务端
-->创建一个SeverSocket实例
-->操作系统将为该SeverSocket创建一个底层数据结构
-->调用accept方法时,将进入阻塞状态,等待客户端的请求
-->当一个新的请求到来之时,将为该链接创建一套新的套接字数据结构
-->等待三次握手完成后&#x