我知道這個問題以前已經問過,但我不知道如何用ObjectOutputStream多次發送一個對象,我試過人們在這個論壇上說過的話。 事情是我正在開發一個使用多線程和套接字的Java遊戲,我已經畫出了兩條蛇,但是我只能將一條蛇從一條蛇發送到另一條蛇,所以,當我試圖再發送一次我得到和StreamCorruptedException。這裏是我的代碼:在Java中重置一個ObjectOutputStream
這種方法是在我的Snake類中,我已經讀過ObjectOutputStrean不能被初始化多次,但是「我怎樣才能發送一次以上的蛇對象?」,它已經變得非常困惑於我:
public void sendSnake()
{
try
{
outputStream=socket.getOutputStream();
oos=new ObjectOutputStream(outputStream);
oos.writeObject(snakeBody);
}catch(IOException ioe)
{
ioe.printStackTrace();
}
}
這是我的代碼的一部分是問題。謝謝。
下面是我在做什麼,而中環一做:
try
{
this.sendSnake();
this.receiveListSnakes();
for(int i=0; i<listaSnakes.size(); i++)
{
for(int j=0; j<listSnake.get(i).tam(); j++)
{
mostrar(listSnake.get(i).take(j).part); //this is for display de snake
}
}
}catch(IOException ioex)
{
ioex.printStackTrace();
}
if(op.equals("up"))
{
posy--;
...
public Snake(JFrame screen)
{
//above I have created the Socket
socket=new Socket(ipClient, port);
outputStream=socket.getOutputStream();
oos=new ObjectOutputStream(outputStream);
}
這是一個好主意,但是當我這樣做時,蛇被發現處於相同的狀態,即我的蛇被髮送到相同的位置,因爲OutoutStream只創建一次:C – Pepe 2014-11-07 03:22:50
@Pepe也許你應該更新你的'Snake'在第二次調用'sendSnake()'之前。你沒有包含太多的代碼。但正如你一再指出你應該真的創建'OutputStream'只有一次。 – 2014-11-07 03:36:39
我已經包含了更多的代碼,當我打電話給sendSnake函數時,我收到了遊戲中的蛇的列表,然後我進行了必要的操作來移動蛇的每一次迭代,我發送蛇的新位置 – Pepe 2014-11-07 03:49:02