java吧 关注:1,298,096贴子:12,836,406
  • 4回复贴,共1

最近学习了socket,我想做一个小游戏在局域网玩,

只看楼主收藏回复

不知道为什么延迟特别高,请大家看一看问题在哪里
这是我用来进行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));
}
}


IP属地:广东1楼2013-09-06 22:08回复
    send1
    receive436
    send1
    receive436
    send0
    receive417
    这是服务器端显示的结果,接受数据用了400多毫秒
    不知道为什么接受数据用了这么长的时间,导致我的游戏卡得几乎不能动了


    IP属地:广东2楼2013-09-06 22:10
    回复
      2026-02-24 21:26:08
      广告
      不感兴趣
      开通SVIP免广告
      400毫妙不算多


      来自手机贴吧3楼2013-09-06 23:25
      回复
        可是我想做的是一个类似泡泡堂那样的小游戏,客户端和服务器端的数据传输得非常快才行,不然游戏就一卡一卡的。而且是寝室里面的局域网,有没有办法把接受数据包的时间减少呢


        IP属地:广东4楼2013-09-07 00:00
        收起回复