簡體   English   中英

從Java PC應用程序到Android Wear 2.0應用程序的網絡消息傳遞

[英]Network messaging from Java PC application to Android Wear 2.0 app

我需要從PC上的Java程序向Android Wear 2.0應用發送消息。 手表直接(沒有中間電話)連接到要從其發送消息的PC上的移動熱點(Windows 10設置為默認熱點設置)。 Wifi adb調試可以在此本地網絡上進行。

目標是一對一的通信,因此我使用了簡單的Java Networking套接字。 筆記本電腦充當服務器,手表充當客戶端。 在Wear應用上,這發生在單獨的AsyncTask中:

@Override
protected Void doInBackground(Void... voids) {
    try(Socket audioSocket = new Socket("localhost",4445);
        PrintWriter out = new PrintWriter(audioSocket.getOutputStream(),true);
        BufferedReader in = new BufferedReader(new InputStreamReader(audioSocket.getInputStream()));){
        while(true){
            String msg = in.readLine();
            // do something with msg
        }
    }
    catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

在Java PC應用程序上,服務器還運行在單獨的線程中:

@Override
public void run() {
    ServerSocket serverSocket = new ServerSocket(4445);
    while (true) {
        try(Socket clientSocket = serverSocket.accept()) {
            try(PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
                BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));) {
                while (true) {
                    // send messages
                }
            }
        } catch (IOException ex) {
            Logger.getLogger(AudioServer.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

在Wear應用的清單中,我要求獲得以下許可:

<uses-permission android:name="android.permission.INTERNET" />

Java PC應用程序運行良好。 但是,當我運行Wear應用程序時,出現以下錯誤:

System.err: java.net.ConnectException: Connection refused

此錯誤的原因是什么? 還是有更好的方法在可穿戴設備和PC應用程序之間進行一對一通信(在這種情況下,安全性並不重要)?

我自己找到了解決方案:我將localhost更改為Windows熱點的默認IP地址192.168.137.1

暫無
暫無

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

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