网络编程Socket知识点回复

时间:2023-06-23 13:16:14

Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。

  Socket和ServerSocket类库位置java.net包中,ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,不因为在服务器墙或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

套接字之间的连接过程可以分为四个步骤:服务器监听,客户端请求服务器,服务器确认,客户端确认,进行通信。

  (1)服务器监听:是服务器墙套接字并不定位具体的客户端套接字,而是处于等待连续的状态,实时监控网络状态。

  (2)客户端请求:是指由客户端的套接字提出连续请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

  (3)服务器端连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连续请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发送给客户端。

  (4)客户端连接确认:一旦客户端确认了此描述,连接就建立好了,双方开始进行通信,而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

看一下demo:

网络编程Socket知识点回复

server端绑定一个端口,并对这个端口进行监听,如果有客户端接入,就new一个线程ServerHandler去处理,

网络编程Socket知识点回复

当有客户端接入时,客户端传入的信息会在ServerHandler中进行处理。

下面看一下Client的代码:

网络编程Socket知识点回复

看一下运行结果:先运行server,看到打印的结果为:网络编程Socket知识点回复

然后运行client,server端打印的结果为:

网络编程Socket知识点回复

这表示server端接收到了Client端发送过来的信息,下面在看一下Client端打印的结果:

网络编程Socket知识点回复

Client端也接收到了服务器端返回的数据。

这种实现方式是一个客户端连接服务器,然后针对这个客户端请求,都会新建一个线程去处理这个线程,当多个客户端连入服务器,就会新建响应的线程去处理响应的请求。这种方式会很快的把系统资源消耗掉。

这就是传统的BIO编程

网络编程的基本模型是Client/Server模型,也就是两个进程直接进行相互通信,其中服务端提供配置信息(绑定的Ip地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请求,通过三次握手建立连接,如果连接成功,则双方即可以进行通信(网络套接字socket)。

网络编程Socket知识点回复