繁体   English   中英

Android保持套接字连接在线程上打开

[英]Android keep socket connection open on thread

谢谢您的帮助。

我正在尝试通过TCP套接字将传感器数据从Android设备流式传输到服务器。 我是Android的新手,线程是我很难掌握的概念。

我有两种方法,connectToServer()和sendDataToServer()。 connectToServer()在启动时被调用一次,并且sendDataToSever()在大约100 HZ处被反复调用。 我想在connectToServer()处打开套接字,并使其始终保持打开状态,以便sendDataToServer()可以在该套接字上重复发送数据。

public static void connectToServer(){
    sendThread = new Thread(new Runnable() {
        public void run() {
            mySocket = null;
            os = null;
            try {
                mySocket = new Socket(PC_IP, PORT);
                os = new DataOutputStream(mySocket.getOutputStream());
            } catch (UnknownHostException exception) {
                Log.d("sunnyDay", exception.getMessage());
            } catch (IOException exception) {
                Log.d("sunnyDay", exception.getMessage());
            }
        }
    });
    sendThread.start();
}


public static void sendDataToServer(byte[] data) {

    String dataString = Arrays.toString(data);

    // send this String to the server
    sendThread = new Thread(new Runnable() {
        public void run() {
            if (mySocket != null && os != null) {
                try {
                    os.writeBytes(dataString + "\n");
                }  catch (IOException exception) {
                    Log.d("sunnyDay", exception.getMessage());
                }
            }
        }
    });
    sendThread.start();
}

我能够重复发送数据的唯一方法是每次在同一线程调用中关闭并重新打开套接字,尽管我觉得这不是解决方案。

我试图将它们都放在同一线程上,以便套接字连接仍然存在,我假设这是我缺少线程的地方。

任何输入,不胜感激。

谢谢!

os.writeBytes(dataString +“ \\ n”)之后的os.flush();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM