不知道为什么延迟特别高,请大家看一看问题在哪里
这是我用来进行socket通信的函数
in和out是ObjectInputStream、OutputStream对象
playermovement是序列化对象,用来传递5个boolean值,就是游戏中的操作命令
public void communicate() {
if (isServer) {
long time1 = System.currentTimeMillis();
try {
playermovement = (Playermovement) in.readObject();
long time4 = System.currentTimeMillis();
System.out.println("receive" + (time4 - time1));
} catch (Exception e) {
e.printStackTrace();
}
long time3 = System.currentTimeMillis();
try {
Playermovement sendPlayermovement = new Playermovement();
sendPlayermovement.setDown(down);
sendPlayermovement.setUp(up);
sendPlayermovement.setLeft(left);
sendPlayermovement.setRight(right);
sendPlayermovement.setSpace(space);
out.writeObject(sendPlayermovement);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
long time2 = System.currentTimeMillis();
System.out.println("send" + (time2 - time3));
}
else {
long time1 = System.currentTimeMillis();
try {
Playermovement sendPlayermovement = new Playermovement();
sendPlayermovement.setDown(down);
sendPlayermovement.setUp(up);
sendPlayermovement.setLeft(left);
sendPlayermovement.setRight(right);
sendPlayermovement.setSpace(space);
out.writeObject(sendPlayermovement);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
long time2 = System.currentTimeMillis();
System.out.println("send" +( time2 - time1));
try {
playermovement = (Playermovement) in.readObject();
} catch (Exception e) {
e.printStackTrace();
}
long time3 = System.currentTimeMillis();
System.out.println("receive" + (time3 - time2));
}
}
这是我用来进行socket通信的函数
in和out是ObjectInputStream、OutputStream对象
playermovement是序列化对象,用来传递5个boolean值,就是游戏中的操作命令
public void communicate() {
if (isServer) {
long time1 = System.currentTimeMillis();
try {
playermovement = (Playermovement) in.readObject();
long time4 = System.currentTimeMillis();
System.out.println("receive" + (time4 - time1));
} catch (Exception e) {
e.printStackTrace();
}
long time3 = System.currentTimeMillis();
try {
Playermovement sendPlayermovement = new Playermovement();
sendPlayermovement.setDown(down);
sendPlayermovement.setUp(up);
sendPlayermovement.setLeft(left);
sendPlayermovement.setRight(right);
sendPlayermovement.setSpace(space);
out.writeObject(sendPlayermovement);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
long time2 = System.currentTimeMillis();
System.out.println("send" + (time2 - time3));
}
else {
long time1 = System.currentTimeMillis();
try {
Playermovement sendPlayermovement = new Playermovement();
sendPlayermovement.setDown(down);
sendPlayermovement.setUp(up);
sendPlayermovement.setLeft(left);
sendPlayermovement.setRight(right);
sendPlayermovement.setSpace(space);
out.writeObject(sendPlayermovement);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
long time2 = System.currentTimeMillis();
System.out.println("send" +( time2 - time1));
try {
playermovement = (Playermovement) in.readObject();
} catch (Exception e) {
e.printStackTrace();
}
long time3 = System.currentTimeMillis();
System.out.println("receive" + (time3 - time2));
}
}










