在13.2.6小节介绍了客户端套接字,接下来介绍服务器套接字ServerSocket。
ServerSocket是Java提供的服务器套接字。该套接字运行在服务器上,并监听特定端口的socket请求。当客户端的socket请求与服务器指定端口建立连接时,服务器将验证客户端请求,并在验证通过后建立服务器与客户端之间的连接。在连接建立之后,客户端和服务器之间就可以进行通信(相互传输数据)了。
ServerSocket类的构造方法有以下几种:
1.ServerSocket()
该构造方法为无参构造方法。在使用这种方法创建ServerSocket对象时,因为没有绑定端口号,所创建的服务器端不会监听任何端口,无法直接使用。因此,需要在使用之前,调用bind(SocketAddress endpoint)方法将其绑定到指定的端口号上,才可以正常使用。
2.ServerSocket(int port)
该构造方法在创建ServerSocket对象时,会绑定一个指定的端口号,其中参数port为给定的端口号。如果给定的端口号为0,则系统会分配一个没有被其他网络程序所使用的端口号。但是,由于客户端需要根据指定的端口号来访问服务器端程序,这种随机分配的情况下将不便于确定端口号,因此建议直接指定一个未被占用的端口号,而不建议将端口号设置为0。
3.ServerSocket(int port, int backlog)
该构造方法在第二个构造方法的基础上增加了一个backlog参数。该参数用于指定在服务器忙时,可以与之保持连接请求的等待客户数量,如果没有指定这个参数,默认为50。
提示:
在创建Socket时如果发生错误,可能会抛出IOException异常。另外,在指定端口的时候,建议选择注册端口(范围是1024~49 151)以免发生端口冲突。
除此之后,ServerSocket类还提供一些常用方法,如表13.11所示。
表13.11 ServerSocket的常用方法(www.daowen.com)
一般情况下,ServerSocket的工作步骤如下:
(1)根据指定端口创建一个ServerSocket对象,该对象将监听指定的端口是否有连接请求。
(2)使用ServerSocket的accept()方法,在指定的端口监听客户端的连接请求。当有客户端试图建立连接时,accept()方法返回连接客户端与服务器的Socket对象。
(3)使用getInputStream()方法或getOutputStream()方法获得输入/输出流。
(4)与客户端进行数据交互,直到连接关闭。
(5)关闭服务器端的Socket,释放资源。
(6)回到(2),继续监听下一次的连接。
以下是创建客户端ServerSocket的代码片段:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。