java - 简单的 UDP 广播不适用于 Android Wear

标签 java android udp wear-os

我只想让我的 UDP 广播正常工作:

    @Override
    protected String doInBackground(String[] params) {
        try {
            DatagramSocket datagramSocket = new DatagramSocket();
            datagramSocket.setBroadcast(true);
            byte[] buffer = "test".getBytes();
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, InetAddress.getByName("192.168.0.255"), 8899);
            datagramSocket.send(packet);
            System.out.println("Package sent.");
            System.out.println("Data: " + buffer);
            System.out.println("Broadcast address: " + this.broadcastAddress);
            System.out.println("--------------------------");
        } catch (Exception e) {
            System.out.println("Package not sent: " + e.getMessage());
            e.printStackTrace();
        }
        return "complete";
    }

此代码通过按钮在 onClick 事件上执行,并且在 AsyncTask 中。

2次点击的log是:

System.out﹕ Package sent.
System.out﹕ Data: [B@3b9b0914
System.out﹕ Broadcast address: /192.168.0.255
System.out﹕ --------------------------
System.out﹕ Package sent.
System.out﹕ Data: [B@3090d7b2
System.out﹕ Broadcast address: /192.168.0.255
System.out﹕ --------------------------

所以看起来它正在工作。但这不是因为我无法使用 Wireshark 捕获它。

我尝试过在我的手机上使用 UDP 包发送器,并且有效。

可能是因为我的 watch 不能像这样发送UDP包?有人知道要搜索什么吗?

最佳答案

您是对的:Android Wear 设备本身无法访问互联网:您的手机应用需要处理所有互联网连接并通过 Wear Data Layer 将结果转发给您的可穿戴应用。

关于java - 简单的 UDP 广播不适用于 Android Wear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929288/

相关文章:

java - 下面的代码有什么问题

java - 内存高效方法 字符串后缀

java - 线程池执行器 : changing corePoolSize at run time

java - Android - 从 Activity 外部调用函数(通过 AlarmManager 和通知)

android - Android 中的自定义 ListView ,顶部有图像

java - 当目的地离线时,数据报包去了哪里?

android - Android 中的谷歌云消息服务如何工作?

android - Tumblr Xauth Android - 400 错误请求错误

两台受防火墙保护的计算机的网络

c - UDP 单播 : two processes listening on same udp port; only one receiving packets