【问题标题】:Network messaging from Java PC application to Android Wear 2.0 app从 Java PC 应用程序到 Android Wear 2.0 应用程序的网络消息传递
【发布时间】:2018-03-19 17:26:31
【问题描述】:

我需要将消息从我 PC 上的 Java 程序发送到 Android Wear 2.0 应用程序。手表直接(无中间电话)连接到我要从中发送消息的 PC 上的移动热点(Windows 10 设置的默认热点设置)。 Wifi adb 调试在这个本地网络上完美无缺。

目标是一对一的通信,所以我使用了简单的 Java 网络套接字。笔记本电脑充当服务器,手表充当客户端。在 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);
        }
    }
}

在穿戴应用的清单中,我请求以下权限:

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

Java PC 应用程序运行良好。但是,当我运行磨损应用程序时,我收到以下错误:

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

这个错误的原因是什么?或者有没有更好的方法在可穿戴设备和 PC 应用程序之间进行一对一的通信(在这种情况下安全性并不重要)?

【问题讨论】:

  • 您是否检查过: 1) 您尝试连接到错误的 IP/端口。 2)你还没有启动你的服务器。 3)您的服务器没有监听连接。 4) 在 Windows 服务器上,listen backlog 队列已满。?参考:SO post
  • 问题确实是IP地址错误:它必须是192.168.137.1(Windows热点IP地址)而不是localhost

标签: java sockets network-programming wear-os


【解决方案1】:

我自己找到了解决方案:我将localhost 更改为192.168.137.1,这是 Windows 热点的默认 IP 地址。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多