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

我的尝试:

(1)我有两个通过USB连接到计算机的Android手机。

(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)已收到该消息。

最佳答案

您不能通过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上所有打开的端口并发送消息。

关于android - 如何以编程方式将PC上的String消息广播到多个USB连接的Android手机?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24348032/

10-11 22:20
查看更多