如何通过Android套接字在多个设备之间有效地同步数据

时间:2016-02-24 09:57:03

标签: android json sockets mobile synchronization

我正在为餐馆开发移动应用程序,以便服务员可以在手机上接受订单。目前我需要将这个应用程序安装在四部手机上,我需要在一部手机上下订单,通过LAN网络在所有其他手机上同步。由于手机或餐厅没有互联网,因此通信应完全通过局域网进行。

在这3个移动设备中,将有相同的应用程序接受订单,而一个充当主设备的应用程序具有单独的应用程序,该应用程序能够接受订单并进行支付。

我已经研究过Android P2P,但这对我没用,因为有些设备低于android 4.0,所以我遇到的唯一解决方案就是套接字通信。

那么在这种情况下我使用套接字通信的最佳方法是什么。我还要提一下,我通过具有订单的套接字发送一个大型JSON文件。

下订单后,我应该将订单从该移动设备发送到所有其他移动设备,或者我应该首先将订单发送到主设备,然后该设备将订单发送到循环中的所有其他设备。我已经尝试了上述两种方法,但不是那么好。有时订单不会与某些设备同步。

下面是我的代码,它将JSON发送到循环中的所有设备。我的代码是否正确?

    Iterator i = hardwareList.iterator();

    while (i.hasNext()) { 

       beHardware hardware = (beHardware) i.next();
       prepAndSendSocketMessage(hardware.getIp(), jsonStringToSend);   

    }

这是prepAndSendSocketMessage()方法

    private boolean prepAndSendSocketMessage(String host,String jsonStringToSend)
    {
        int port = 51253;
        Socket socket = new Socket();
        try {

            socket.bind(null);
            socket.connect((new InetSocketAddress(host, port)), 5000);
            OutputStream outputStream = socket.getOutputStream();
            outputStream.write(jsonStringToSend.getBytes());
            outputStream.close();


        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } finally {
            if (socket != null) {
                if (socket.isConnected()) {
                    try {
                        socket.close();
                    } catch (IOException e) {
                    }
                }
            }
        }

        return true;
    }

0 个答案:

没有答案