在ANDROID中如何将值传递到具有开放套接字连接的后台线程

时间:2018-10-28 02:21:04

标签: android multithreading sockets handler

我正在尝试将键盘值传递给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();
                    }
                }
            });

        }

我已连接到服务器,但此后崩溃。

0 个答案:

没有答案