发布这篇文章的原因,是因为作者太久没有写socket相关类, 导致现在对于这两个类的认识有点混乱, 因此写这篇文章来帮助自己梳理socket相关信息,如各位观众也遇到了与我类似的情况, 可以阅读此文章,来进行回忆复习。
首先得了解一下ServerSocket跟Socket它们是什么:
ServerSocket和Socket这两个类是Java中用于网络通信很重要的一个类, 它们各自在程序中扮演的角色不同
ServerSocket: 主要用于服务端,负责监听客户端的连接请求, 当客户端尝试连接到特定的端口时,ServerSocket就会接受到这个请求,并与其建立连接,然后返回一个新的Socket对象, 用户后续的通信
Socket:用户客户端或服务端(在接收到ServerSocket的连接请求后),它代表一个网络连接,通过该连接,可以发送和接受消息。
所以,使用的过程应该是这样子的:
首先服务器端得需要创建一个SerberSocket对象,并监听某一个端口(例如8080),然后通过accept等待客户端的请求连接。
客户端这边呢就可以创建Socket对象,并尝试连接服务端特定的端口(8080)
如果两端连接成功, 服务端那边的accept就会返回一个Socket对象, 服务端就可以通过这个Socket对象与客户端进行通信,同时客服端请求成功后, 也会返回一个Socket对象,通过这个对象可以与服务端进行通信。
所以这样子看下来,我们会发现, ServerSocket其实更像是一个服务器对一个客户端打开了一个通道(8080),而客户端需要尝试用一个水管(Socket)去连接这个通道(8080),连接成功之后呢,服务端跟客户端就可以通过这个水管进行通信了(Socket)