我有一个游戏的服务器/客户端模型,但它一直停留在ObjectInputStream
初始化。
以下是客户端启动方法的代码:
public void start(){
try {
Socket s = new Socket("127.0.0.1", 24680);
Thread.sleep(1000);
ois = new ObjectInputStream(s.getInputStream()); // stuck here
oos = new ObjectOutputStream(s.getOutputStream());
startGame();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是服务器代码:
try {
InputStream fis = socket.getInputStream();
ObjectInputStream ois = new ObjectInputStream(fis);
while (true) {
ArrayList < Dot > lists = (ArrayList < Dot > ) ois.readObject();
for (Socket s: sockets) {
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
oos.writeObject(lists);
}
}
} catch (Exception e) {
e.printStackTrace();
}
提前致谢!
答案 0 :(得分:4)
您需要至少在一端 ObjectOutputStream
之前构建ObjectInputStream
,最好是两者都是为了避免发生意外。否则new ObjectInputStream()
阻止尝试读取对等方的new ObjectOutputStream()
尚未写入的流标题,因为他也在new ObjectInputStream().
其他说明:
ObjectOutputStreams
,你将继续编写新的流标题,这是同行不会期望或理解的。sleep()
。网络代码中不需要睡眠。他们只是浪费时间。货物崇拜节目。