簡體   English   中英

安卓服務器PC客戶端通信

[英]Android server PC client communication

我正在解決一個問題,我必須將數據從 PC 應用程序(用 java 編寫)發送到 android 應用程序(java)。 這是一個收銀應用程序,需要在Android應用程序上顯示帳單詳細信息。 雖然沒有賬單,android app 需要顯示其他東西(圖片等) 收銀機應用程序已經存在,它是桌面 PC 軟件。

做這個的最好方式是什么? 它目前是通過從文件中寫入和讀取來完成的,但我想以更好的方式來完成。 我開始使用套接字,其中 android 應用程序是一個服務器,等待 PC 上的收銀機應用程序開始連接。 發生這種情況時,連接打開並且收銀機正在發送 JSON 字符串,直到賬單結束。

我選擇 android 作為服務器,因為一個收銀機可能連接了多個 android,因此它可以在多個“屏幕”上顯示帳單詳細信息,並使 android 應用程序保持特定端口始終打開並偵聽成為可能它為客戶。

這是一個很好的方法嗎? 我剛剛讀到套接字連接在非使用期間可能會死亡的可能性,這可能是硬件問題。 我還閱讀了有關 RMI java 的內容,但不知道我是否應該那樣做。 我從來沒有研究過設備之間的通信,所以我很感激每一個建議。

我按照建議做了並改變了邏輯。 我制作了PC服務器和android客戶端。

如果有人需要,這是測試服務器應用程序的代碼。 它是一個簡單的服務器,通過選擇的端口將在終端中輸入的消息發送到客戶端。

public static void main(String[] args) {

    while (true) {
        try {
            ServerSocket serverSocket = new ServerSocket(12345);
            Socket socket = serverSocket.accept();

            DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());

            while (true) {
                if (socket.isConnected()) {
                    System.out.println("connected");
                }
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

                // Reading data using readLine
                String name = bufferedReader.readLine();
                System.out.println(name);

                dataOutputStream.writeUTF(name);
                if (false) break;
            }

            socket.close();
            serverSocket.close();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM