Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过android套接字在多个设备之间高效地同步数据_Android_Json_Sockets_Mobile_Synchronization - Fatal编程技术网

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

如何通过android套接字在多个设备之间高效地同步数据,android,json,sockets,mobile,synchronization,Android,Json,Sockets,Mobile,Synchronization,我正在为餐馆开发一个移动应用程序,这样服务员就可以用手机点菜了。目前,我需要这个应用程序安装在四部手机上,我需要在一部手机上下订单,以便通过局域网在所有其他手机上同步。通讯应完全通过局域网进行,因为电话或餐厅中没有互联网 在这种情况下,3个手机将具有相同的应用程序来接受订单,而一个作为主设备的手机将具有单独的应用程序,该应用程序具有接受订单和支付的能力 我已经研究过Android P2P,但这对我来说没有用,因为有些设备低于Android 4.0,所以我遇到的唯一解决方案是套接字通信 那么,在这

我正在为餐馆开发一个移动应用程序,这样服务员就可以用手机点菜了。目前,我需要这个应用程序安装在四部手机上,我需要在一部手机上下订单,以便通过局域网在所有其他手机上同步。通讯应完全通过局域网进行,因为电话或餐厅中没有互联网

在这种情况下,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()方法


我对您最终使用的场景非常感兴趣,因为我目前发现自己使用的是类似的场景。你能告诉我android P2P解决方案的正确方向吗,因为我可能没有>4.0的限制。提前感谢。正如我在上面的问题中提到的那样,我使用了它,使用ine设备作为服务器,将所有内容分发给所有人。您如何解决订单有时不同步的问题?我对您最终使用的场景非常感兴趣,因为我目前发现自己使用的是类似的场景。你能告诉我android P2P解决方案的正确方向吗,因为我可能没有>4.0的限制。提前感谢我在上面的问题中提到过,我使用的是ine设备作为服务器,将所有内容分发给每个人。您如何解决订单有时不同步的问题?
    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;
    }