什么是 socket?
Socket又名“套接字”,是基于TCPP协议封装出来的一套编程接口。通常就被称作套接字,反正记住这个就可以了。Socket把底层复杂的TCP协议的各种细节给隐藏了,封装成了简单的可操作的编程API接口,提高开发人员写网络通信软件的开发效率。
如果你想写一个像qq、微信这样的C/S架构的通信软件,就可以基于 Socket,而不是自己生写原生的TCP/IP协议底层的东西。
注意 Socket本身并不是协议,它是应用层与TCP/IP协议族通信的中间软件抽象层,是一组调用接口。
Socket连接过程
根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。