В ANDROID, как передать значения в фоновый поток, который имеет соединение с открытым сокетом - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь передать значения клавиатуры клиенту Android, чтобы отправить его на сервер.

Я использую потоки, но не хочу запускать новый поток или вызывать socketconnect каждый раз.Вместо этого я хочу запустить один поток, открыть соединение с сокетом, а затем использовать тот же поток и уже открытый сокет, чтобы передать некоторые значения на сервер с клавиатуры.

В моем случае подойдет работающий пример с обработчиком, но я не знаю, как его кодировать.ASYNCTASKS не поможет, так как соединение будет открываться снова и снова.

Мой класс подключения -

class conThread implements Runnable {
    public Handler dataHandler  = new Handler() ;
    @Override
    public void run() {
        try {
            InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
            socket = new Socket(serverAddr, SERVERPORT);//}
        } catch (IOException e) {
          e.printStackTrace();
        } 
    }
}


**and my button has got the below code to send values to the thread for passing on to the server **

public void dataSend(View view) {
        conThread con = new conThread();
        new Thread(con).start();
        con.dataHandler.post(new Runnable() {
                public void run() {
                    try {
                        PrintWriter out = new PrintWriter(socket.getOutputStream());
                        Log.d("Client", "S: data");
                        out.print("3333");
                        out.flush();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });

        }

Я подключаюсь к серверу, но после этого получаю сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...