我的公司为我们的系统创建了自己的自定义Android硬件。
我们目前有2个Android设备需要一起通信并同步其中的sqlite数据库。
我开始编写自定义套接字协议来解决此问题。这基于服务器客户端模型。但是,当我进行更多开发时,我发现每个设备都需要运行服务器套接字,并且可以在系统中传送3个或更多设备,并且服务器可能会死机或重启或崩溃。
所以我的想法是让每个设备搜索一组存储在数组中的端口,并绑定到当设备检查并创建我的ServerSocket时当前可用的端口。
这意味着可能device1具有ServerSocket(1111)而device2具有ServerSocket(1112)等。
然后,每个设备通过多个端口发送消息。 例如:device1遍历数组并打开客户端套接字并为每个端口发送消息: 套接字套接字=新套接字(IP,1112); 发送消息...... 套接字套接字=新套接字(IP,1113); 发送消息...... 等
当然我已经制作了这个多线程(由android服务运行)所以没有阻止Android设备中的UI线程。
我的问题是,我这样做了吗?或者Java中有更好的方法可以做到这一点吗?
编辑:
我决定添加一些代码来解释我的问题。
我有多个通过TCP / IP连接在一起的Android设备,我在每个设备上创建一个ServerSocket,如下所示:
ServerSocket serverSocket = new ServerSocket(4000);
现在,当第二个设备尝试此操作时,它在Java中出现错误,因为套接字正由另一个设备使用。他们的IP地址类似于172.23.3.128和172.23.3.127。
因此,即使拥有不同的IP地址,我也会收到来自Java的错误,说我已经绑定到该端口/ IP,这是真的。这是我不明白的。
答案 0 :(得分:1)
你也可以:
通常至少这样做。
答案 1 :(得分:0)
基本上服务器需要无故障运行,您的想法是服务器中断。否则,您可以使用单个服务器接受来自端口中的多个客户端的连接,例如:5000,5001,5002等。
修复每个客户端的套接字端口.Server尝试打开一个数组。
通过多个端口发送邮件意味着什么?为每个客户端使用单个端口,否则您无法识别哪个客户端正在发送消息。