我知道这个问题以前已经问过,但我不知道如何用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