Слушатель сокета IO не работает в Android - PullRequest
0 голосов
/ 08 ноября 2019

Я работаю над уведомлением о Android TV. Я реализовал это с помощью подключения к серверу Socket IO. Я установил соединение с Socket Server с помощью java.net.Socket, но не могу прослушать отправленные сообщения с сервера.

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listen_socket_message);
    new AsyncAction().execute();
}


private class AsyncAction extends AsyncTask<String, Void, String> {
    protected String doInBackground(String... args) {
        try {
            InetAddress serverAddr = InetAddress.getByName("xx.xx.xxx.xxx");
            clientSocket = new Socket(serverAddr, 8000);
        } catch (UnknownHostException e1) {
            e1.printStackTrace();

            Log.d("Exception_UnknownHost", e1.getMessage());
        } catch (IOException e1) {
            e1.printStackTrace();
            Log.d("Exception_socket", e1.getMessage());
        }

        return null;//returns what you want to pass to the onPostExecute()
    }

    protected void onPostExecute(String result) {
        //resultis the data returned from doInbackground
        if (clientSocket.isConnected()) {
            setListener();
            Toast.makeText(SocketConnectionActivity.this, "Connected!!", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(SocketConnectionActivity.this, "Not Connected!!", Toast.LENGTH_LONG).show();
        }
    }
}

private void setListener() {

    // TODO Auto-generated method stub
    new Thread() {
        @Override
        public void run() {
            try {
                BufferedReader br = new BufferedReader(
                        new InputStreamReader(clientSocket.getInputStream()));
                String line = br.readLine();
                Log.d("SocketConnection",line);
                br.close();
            } catch (UnknownHostException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }.start();
}

1 Ответ

0 голосов
/ 08 ноября 2019

Где находится сокет сервера в этом коде? Вы создаете клиентский сокет и используете этот же клиентский сокет для прослушивания.

...