我正在为餐馆开发移动应用程序,以便服务员可以在手机上接受订单。目前我需要将这个应用程序安装在四部手机上,我需要在一部手机上下订单,通过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;
}