我有一个python服务器和大约10个Android客户端,使用套接字。非常重要的是,当服务器发送消息时,所有客户端同时接收它(比如差异的十分之一秒)。
但是连接是通过Wifi连接的,有些设备比其他设备更晚得到消息,这会产生非常混乱的结果。我不想获得每台设备的延迟,因为这是一种非常不可靠的方法。我想要尽可能准确的东西。
例如,在FPS游戏中,通常在回合开始时进行倒计时,并且每个玩家可以同时开始游戏。这背后有什么逻辑?
至于我的代码目前是什么样的:
我在android中使用BufferedReader来读取服务器发送的每一行。服务器是一个控制台应用程序,您可以在其中键入消息,当您按Enter键时,每个列出的客户端都会为每个客户端接收一个新线程。
接收消息的java方法:
private void readMessage() throws IOException {
String data;
while ((data = mBufferedReader.readLine()) != null) {
data = data.toUpperCase();
if (data.startsWith("POSITION")) {
String[] splitData = data.split("/");
Log.d(Constants.TAG, splitData[1]);
mMainActivity.setDevicePosition(Integer.parseInt(splitData[1]));
} else {
String message = data.substring(data.indexOf('/') + 1, data.length());
int devices = Integer.parseInt(data.substring(0, data.indexOf('/')));
if (message.length() >= devices) {
message += " ";
} else {
int difference = devices - message.length();
for (int i = 0; i < difference; i++) {
message += " ";
}
}
mMainActivity.printMessage(message);
}
}
}
python line:
for cl in clients_list:
start_new_thread(send_message_thread, (cl, message,))