我的目标:我想以编程方式将PC消息(包含PC的系统时间)从PC广播到两个连接USB的Android手机。
我的尝试:
(1)我有两部Android手机通过USB连接到电脑。
(2)我使用" adb -s forward"用于设置计算机端口38300转发到设备端口38300的命令。
(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编程。)
答案 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上的所有开放端口并发送消息。