如何以编程方式将PC消息从PC广播到多个USB连接的Android手机?

时间:2014-06-22 04:06:58

标签: android sockets adb

我的目标:我想以编程方式将PC消息(包含PC的系统时间)从PC广播到两个连接USB的Android手机。

我的尝试:

(1)我有两部Android手机通过USB连接到电脑。

adb-devices

(2)我使用" adb -s forward"用于设置计算机端口38300转发到设备端口38300的命令。

adb-forward

(3)为Android手机编程:基本上,我在端口38300上创建ServerSocket,设置其超时,并调用accept()方法。

(4)PC编程:我使用Socket创建this.pchost_socket = new Socket("localhost", 38300);,并使用oos = new ObjectOutputStream(this.pchost_socket.getOutputStream()); oos.writeObject(msg);发送包含PC系统时间的消息。

问题:

只有一部Android手机(在这种情况下,是手机067125a40acc819e)收到了此消息。

  

(1)这是通过USB / ADB进行通信的默认行为吗?
  (2)如何以编程方式将PC消息从PC广播到多个USB连接的Android手机? (没有必要使用Socket编程。)

1 个答案:

答案 0 :(得分:1)

您无法通过ADB在主机上组播端口;您的第二个adb forward命令从第一个设备窃取端口38300并将其分配给第二个设备。如果你想要推进这个解决方案,你可以做的是设计你的系统使用一系列端口,从38300开始(或任何你喜欢的)。设备1获得38300,​​设备2获得38301,设备3获得38302,依此类推。在设备端,为所有设备使用相同的端口号,以简化应用程序设计。

adb -s <device1> forward tcp:38300 tcp:38300
adb -s <device2> forward tcp:38301 tcp:38300
adb -s <device3> forward tcp:38302 tcp:38300
adb -s <device4> forward tcp:38303 tcp:38300

然后,您需要将PC软件连接到PC上的所有开放端口并发送消息。