【发布时间】:2012-05-05 11:16:03
【问题描述】:
我在线程中只使用普通的 DataInputStream 和 DataOutputStream 来接收、发送(在服务器上接受)来制作游戏,但它真的很慢。 >5 秒延迟。
这是我的制作方法(大部分看起来像这样):
(dos 是 DataOutputStream)
dos = new DataOutputStream(socket.getOutputStream());
dos.writeFloat(dp.x);
dos = new DataOutputStream(socket.getOutputStream());
dos.writeFloat(dp.y);
dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF(dp.username);
对于输入(这个在服务器中)我使用:
(dis 是 DataInputStream,它在 for 循环中,所以 i 代表每个播放器)
dis = new DataInputStream(list_sockets.get(i).getInputStream());
x = dis.readFloat();
dis = new DataInputStream(list_sockets.get(i).getInputStream());
y = dis.readFloat();
dis = new DataInputStream(list_sockets.get(i).getInputStream());
username = dis.readUTF();
所以它真的很慢,但我不知道为什么:( 请帮忙?
编辑:每个操作(发送、接受、接收)都有自己的守护线程。
【问题讨论】:
-
为什么要反复创建新的 DataInput/OutputStreams?
-
我不知道。这就是我看到其他人在网上做的方式。这是个大问题吗?
-
这太浪费时间和资源了。
-
好的,但是如果我只在开始时创建它,多人游戏会更快吗?
-
没有人可以通过您发布的代码来判断。它不应该更慢,这就是所有可以说的。
标签: java performance sockets