(Java)通过socket发送和映像时出错:Java。木卫一。StreamCorruptedException:无效类型代码:3B
我正在制作一个轰炸机游戏,它需要在局域网中工作。我需要从一个客户端(游戏)向服务器发送一个图像、2个整数和一个对象,然后返回到另一个客户端(另一个游戏)。现在我只是想把所有这些东西都发送到一个游戏中,发送到服务器,然后返回到游戏中。当我第二次尝试发送图像时,我遇到了问题。这是我的服务器部件代码:
public class Server {
//Atributes....................................
private ServerSocket serverSocket = null;
private Socket socket = null;
public boolean conected = false;
private ObjectInputStream Mensajeinput = null;
private ObjectOutputStream Mensajeoutput = null;
private DataInputStream BomberInput = null;
private DataOutputStream BomberOutput = null;
//.............................................
int X, Y;
BufferedImage CurrentSprite;
public static void main(String[] args) throws Exception {
Server Servidor = new Server();
Servidor.run();
}
public void run() throws Exception{
serverSocket = new ServerSocket(208);
socket = serverSocket.accept();
conected=true;
Mensaje Actualization= null;
while ( conected ){
//=====initialize all the input and output Streams================================
BomberInput = new DataInputStream(socket.getInputStream());
BomberOutput = new DataOutputStream(socket.getOutputStream());
Mensajeinput = new ObjectInputStream(socket.getInputStream());
Mensajeoutput = new ObjectOutputStream(socket.getOutputStream());
//=====receive and send the ints ============
X = (int) BomberInput.readInt();
BomberOutput.writeInt(X);
BomberOutput.flush();
Y = (int) BomberInput.readInt();
BomberOutput.writeInt(Y);
BomberOutput.flush();
//=========receieve and send the image=====================
CurrentSprite = (BufferedImage) ImageIO.read(BomberInput);
ImageIO.write(CurrentSprite, "GIF", BomberOutput);
//==========receive the object=================
Actualization= (Mensaje) Mensajeinput.readObject();
}
//====Close socket===============================
socket.close();
}
}
这是游戏代码的客户端部分:
M = new Mensaje(0 , 0 , 0, 0);
if (b1.isAlive()) controlPj.MoverPj(b1, M);
//*****************************INTERACTION WITH THE SERVER*****************************
//=====Initialize inputs and outputs=======
BomberOutput = new DataOutputStream(Sock.getOutputStream());
BomberInput = new DataInputStream(Sock.getInputStream());
MensajeOutput = new ObjectOutputStream(Sock.getOutputStream());
MensajeInput = new ObjectInputStream(Sock.getInputStream());
//=====Sends and receive the ints =======
BomberOutput.writeInt(b1.x);
X = BomberInput.readInt();
BomberOutput.flush();
BomberOutput.writeInt(b1.y);
Y = BomberInput.readInt();
BomberOutput.flush();
//======Sends and receive the image=======
ImageIO.write(b1.Current, "GIF", BomberOutput );
EnemmySprite = (BufferedImage) ImageIO.read(BomberInput);
//======================Sends the object==================
MensajeOutput.writeObject(M);
MensajeOutput.flush();
System.out.println("Matriz Actualizada Recibida");
//==========================================================================
//***********************************************************************************************************************
除图像部分外,所有工作正常。客户端发送映像,服务器接收映像,然后重新发送映像,客户端接收映像。但随后它抛出了这个错误:
Exception in thread "main" java.io.StreamCorruptedException: invalid type code: 3B
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1379)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at bomberman2.Server.run(Server.java:90)
at bomberman2.Server.main(Server.java:42)
发生错误的特定行位于
Actualization= (Mensaje) Mensajeinput.readObject();
你知道为什么会发生这种错误吗?谢谢你的帮助
共 (0) 个答案