android studio tcp 只允许一个客户端连接

用Android studio 建立一个tcp服务端,想设置成一次只允许一个客户端连接,
即accept建立一个连接之后,就把服务端socket关闭,不让其他客户端连接。
在处理完后,再将端口释放再次使用。
想知道使用Android studio怎么实现这样的功能。


private ServerSocket mServerSocket;
private Socket mSocket;
private void openService() {
        try {
            mServerSocket = null;
            mServerSocket = new ServerSocket(5000);//端口号5000
        } catch (Exception e) {
            e.printStackTrace();
            log("服务开启失败");
            return;
        }
        log("服务开启成功");
        //启动服务线程
        SocketAcceptThread socketAcceptThread = new SocketAcceptThread();
        socketAcceptThread.start();

    }
  /**
     * 连接线程
     * 得到Socket
     */
    class SocketAcceptThread extends Thread {
        @Override
        public void run() {
            try {
                //等待客户端的连接,Accept会阻塞,直到建立连接,
                //所以需要放在子线程中运行
                mSocket = mServerSocket.accept();
                mServerSocket.close();//关键是这一步,当ServerSocket收到客户端连接之后,关闭ServerSocket
                //启动消息接收线程
                log("socket开启中");
                startReaderService(mSocket);
                log("socket开启成功");
            } catch (IOException e) {
                e.printStackTrace();
                log("socket开启失败");
            }
        }
    }
/**
     * 从参数的Socket里获取最新的消息
     */
    private void startReaderService(final Socket socket) {

        new Thread() {
            @Override
            public void run() {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
//                        MsgInfo msgInfo = new MsgInfo(2, mServerIP, "开启成功");
//                        msgInfo.setCreatDate(System.currentTimeMillis());
//                        msgInfo.setCreatTime(getDateToString(msgInfo.getCreatDate()));
//                        mAdapter.addData(msgInfo);
                        mBinding.btSend.setEnabled(true);


                    }
                });
                DataInputStream reader;
                try {
                    // 获取读取流
                    reader = new DataInputStream(socket.getInputStream());
                    while (isOpenService) {
                        // 读取数据
                        String msg = reader.readUTF();
                        log("客户端的信息:" + msg);
                        //发消息更新UI
                        Message message = new Message();
                        message.what = 1;
                        message.obj = msg;
                        serviceHandler.sendMessage(message);
                        try {
                            SystemClock.sleep(100);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                } catch (Exception e) {
                    log("断开连接导致异常");
                    e.printStackTrace();
                    if (mSocket != null) {
                        try {
                            mSocket.close();
                        } catch (IOException ioException) {
                            ioException.printStackTrace();
                        } finally {
                            mSocket = null;
                        }
                        openService();//当前客户端断开连接之后,重新开启ServerSocket,等待连接
                    }
              
                }
            }
        }.start();
    }