我试图实现一个小游戏,其中多个客户端必须连接到服务器,并一起玩。每个人都有不同的GUI,他们通过类ClientConnect进行通信,ClientConnect是从GUI类启动的Runnable。问题是我在代码的第一行得到一个EOFException,当我试图intanciate输入流。服务器当然是在开始时发送一个对象。 这是我得到异常的实现的一个切入点。Socket编程,多线程游戏,获取文件结尾异常
我该怎么办?
public ClientConnect(InetAddress address, int port) throws IOException {
clientSock = new Socket(address, port);
}
@Override
public void run() {
ArrayList<Object> receivedObject = null;
try (ObjectInputStream fromServer = new ObjectInputStream(clientSock.getInputStream());
ObjectOutputStream toServer = new ObjectOutputStream(clientSock.getOutputStream()))
{
while(!move) {
receivedObject = (ArrayList<Object>) fromServer.readObject();
move = !(receivedObject.get(0).equals("you have to wait!!"));
}
actualPlayer = (String) receivedObject.get(0);
scoreCard = (List<String>) receivedObject.get(1);
highScore = (HashMap<String, Integer>) receivedObject.get(2);
numberOfPlayers = (int) receivedObject.get(3);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这里是个例外:
CShellExt::CShelljava.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at edu.hm.se2.kniffel.ClientConnect.run(ClientConnect.java:41)
at java.lang.Thread.run(Unknown Source)
Ext()
线41与线的尝试
我开始了ClientConnect线程在GUI这样:
public void actionPerformed(ActionEvent arg0) {
//Online-Spiel starten
if(game.listLength()>0){
try {
client = new ClientConnect(InetAddress.getByName(null), 2000);
new Thread(client).start();
while (!client.getMove()) {
lblActualUser.setText("WAITING.... " + client.getActualPlayer() + " ist an der Reihe");
}
你的解释没有意义。 – EJP