Socket是应用层与下层(传输层以及更下层)通信的中间软件抽象层,是一组接口。它把复杂的TCP/IP协议族隐藏在Socket接口后面,对于用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
上图为Socket的通信流程。
参照上图,从服务器端说。服务器端先初始化Socket,接着与端口进行绑定(bind),对端口进行监听(listen),调用accept阻塞等待客户端的连接,建立连接之后,服务器端接收到请求并处理请求,然后将回应数据发送给客户端,等待客户端的下一个指令,是继续提交请求还是结束连接,如果结束连接就close。
从客户端说。客户端先初始化Socket,接着与服务器端主动建立连接,连接建立之后在Socket上发送请求,接收回应,如还需要发送请求则继续发送以及接收回应,如无连接需要了就发送消息断开连接,最后close。