code: @Override
      public void close() throws IOException {
          dispose();
  
          if(socket != null) {
              socket.close();
              socket = null;
          }
      }
docs: Stops the server and dispose its resources.
  @throws IOException When an I/O error occurs