簡體   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