'java.net.Socket java.net.ServerSocket.accept()' для пустой ссылки на объект

Server Socket выдает эту ошибку и приложение полностью вылетает. Я вызвал этот поток в моем методе onCreate(). Когда действие выполняется в первый раз, это хорошо, но после завершения и возврата к этому заданию выдается ошибка ниже.

'java.net.Socket java.net.ServerSocket.accept ()' для пустой ссылки на объект

 private class ClientConnectionThread implements Runnable {
        ServerSocket serversocket;

        public ClientConnectionThread(){
            try{
                serversocket = new ServerSocket(5005);
                serversocket.setReceiveBufferSize(1024*1024);
                Log.v("BoardCastRunning","BoardCast Server Waiting");
            }catch (IOException ex){
                Log.v("BoardCastError",ex.toString());
            }


        }

        @Override
        public void run() {

            while(true){
                try{

                    streamClientSocket = serversocket.accept();
                    Log.v("BoardCast","New Connection");
                    videoBroadcastSockets.add(streamClientSocket);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Utils.shortToast(context,
                                    "Client connected from: "
                                            + streamClientSocket.getInetAddress().getHostAddress()
                                            + " " + streamClientSocket.getPort());


                        }
                    });
                }
                catch(IOException ex){
                    Log.v("BoardCastError",ex.toString());
                }


            }
        }
    }

1 ответ

Решение

Я нахожу ошибку и редактирую свой код, как показано ниже, теперь он работает отлично и отлично.

  private class ClientConnectionThread implements Runnable {
        ServerSocket serversocket;

        public ClientConnectionThread(){
            try{
                serversocket = new ServerSocket(5005);
                serversocket.setReceiveBufferSize(1024*1024);
                Log.v("BoardCastRunning","BoardCast Server Waiting");
            }catch (IOException ex){
                Log.v("BoardCastError",ex.toString());
            }


        }

        @Override
        public void run() {

            while(true){
                try{
                    if(serversocket!=null){
                        if(!serversocket.isClosed()){
                            streamClientSocket = serversocket.accept();
                            Log.v("BoardCast","New Connection");
                            if(streamClientSocket!=null){
                                videoBroadcastSockets.add(streamClientSocket);
                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        Utils.shortToast(context,
                                                "Client connected from: "
                                                        + streamClientSocket.getInetAddress().getHostAddress()
                                                        + " " + streamClientSocket.getPort());


                                    }
                                });
                            }

                        }
                    }


                }
                catch(IOException ex){
                    Log.v("BoardCastError",ex.toString());
                }


            }
        }
    }
Другие вопросы по тегам