мой компьютер, кажется, падает, когда я пытаюсь отправить объект с сервера, строка 27 пытается получить объект, я думаю, что получил недопустимый код типа: 0 один раз, но обычно просто сбой, поэтому мне приходится перезапуститьObjectInputStream вызывает сбой
new Thread(){
public void run(){
boolean sent = false;
boolean threadStarted = false;
while(true){
if(game.changedTurns){
System.out.println(game.changedTurns);
if(!sent){
try{
System.out.println("attempt to send from player");
out.writeObject(game.getSquareColors());
System.out.println("sent");
sent = true;
//Thread.sleep(500);
sent = false;
}
catch(Exception ex){
System.out.println("player1 " +ex.getMessage());
}
}
}if(!threadStarted)
threadStarted = true;
new Thread(){
public void run(){
while(true){
try{
Object ob = in.readObject(); // line 27
System.out.println("Player received");
}
catch(Exception e){
System.out.println("player2 "+e.getMessage());
}
}
}
}.start();
}
}
}.start();
}
объект отправляется на сервер от другого клиента, сервер получит и пытается отправить объект в строке 16:
class Opponent implements Runnable{
ObjectInputStream in2;
ObjectOutputStream out;
Opponent(ObjectInputStream in2, ObjectOutputStream out){
this.in2 = in2; //from opponent to player
this.out = out;
}
public void run(){
while(true){
try{
System.out.println("from opponent to server waiting");
Object o2 = in2.readObject();
if(o2 instanceof Color[]){
System.out.println("fee");
out.writeObject(o2); //line 16
out.flush();
}
}
catch(Exception e){
System.out.println("S2 " +e.getMessage());
}
}
}
}
}
У вас есть stacktrace? Или это не авария jvm? –
Похоже, у вас есть лишнее 'sent = false' прямо под' sent = true'. Не думайте, что это вызывает вашу проблему, но это может быть проблемой позже. – DoubleDouble
Я думаю, что это авария jvm, поскольку я думал, что однажды увидел «недопустимый тип кода: 0», но обычно мой компьютер падает, и я думаю, что он не достигает catch –