Socket
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)。
:::tips
Socket 是应用层与 TCP/IP 协议族通信的中间软件抽象层,它是操作系统对外开放的接口。
:::
在设计模式 中,Socket 其实就是一个门面模式,它把复杂的 TCP/IP 协议族隐藏Socket接口后面,对用户来说,一组简单的接口就是全部,让 Socket 去组织数据,以符合指定的协议。
主机 A 的应用程序要能和主机 B 的应用程序通信,必须通过 Socket 建立连接,而建立 Socket 连接必须需要底层 TCP/IP 协议来建立 TCP 连接。建立 TCP 连接需要底层 IP 协议来 寻址网络中的主机。我们知道网络层使用的 IP 协议可以帮助我们根据 IP 地址来找到目标主机,但是一台主机上可能运行着多个应用程序,如何才能与指定的应用程序通信就要通过 TCP 或 UPD 的地址也就是端口号来指定。这样就可以通过一个 Socket 实例唯一代表一个主机上的一个应用程序的通信链路了。
ServerSocket
在通信编程里提供服务的叫服务端,连接服务端使用服务的叫客户端。
在开发过程中, 如果类的名字有 Server 或者 ServerSocket 的,表示这个类是给服务端容纳网络服务用的,如果类的名字只有 Socket 的,那么表示这是负责具体的网络读写的。那么对于服务端来说 ServerSocket 就只是个场所,具体和客户端沟通的还是一个一个的 socket,所以在通信编程里,ServerSocket 并不负责具体的网络读写,ServerSocket 就只是负责接收客户端连接后, 新启一个 socket 来和客户端进行沟通。这一点对所有模式的通信编程都是适用的。