[英]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.