一、概念
1、socket通常也称作"套接字"。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
2、建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口,对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是socket编程接口;HTTP提供了封装或者显示数据的具体形式;socket提供了网络通信的能力。
在设计模式中,socket其实就是一个门面(Facade)模式,它把复杂的TCP/IP协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议。
3、socket用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
4、对于Javasocket编程而言,有两个概念,一个是ServerSocket,一个是socket。服务端和客户端之间通过socket建立连接,之后它们就可以进行通信了。首先ServerSocket将在服务端监听某个端口,当发现客户端有socket来试图连接它时,它会accept该socket的连接请求,同时在服务端建立一个对应的socket与之进行通信。这样就有两个socket了,客户端和服务端各一个。
5、ServerSocket用于服务器端,sock