如何通过套接字更新 class

how to update class by socket

// CLIENT SOURCE

while(!isStop){
    try{
        Object ob = mc.getOis().readObject();
        try{ 
            message = (String) ob;
        } catch (ClassCastException e){

            try {
                user = (User) ob;
                mc.user = (User) ob;
                message = "none";
            } catch ( ClassCastException ee ) {

                Room room = (Room) ob;
                mc.setRoom(room);   
                System.out.println("room come in");
                for (int i = 0; i<mc.room.userlist.size(); i++ )
                {
                    System.out.println("ThreadUserNum:" + room.userlist.get(i).getPlayer_Num());
                }


                mc.roomidimg();
                message = "none";

            }   
        }
    }
}

// SERVER SOURCE
public void roombroodcast ( Room msg, int room_id) throws IOException{
    if (room_id == 1){
        for( ServerThread ct : sv.getroom1list() ){
            for( int i = 0; i<msg.getUserlist().size(); i++){
                System.out.println(i + "broodcast:" + msg.getUserlist().get(i).getUser_Id());
            }
            ct.send( msg );
        }
    } else {
        for( ServerThread ct : sv.getroom2list() ){
            ct.send( msg );
        }
    }
}

我们正在制作游戏,但遇到了一些问题。 最先进入游戏的第一个用户,无法获得其他用户的房间 class 广播。 我的意思是,另一个用户或另一个用户可以获得房间 class 广播,但第一个用户无法获得更新的房间信息。 我怎样才能更新房间class广播问题? 我们正在使用套接字进行通信。

您总是发送同一个对象,因此序列化实际上不会重新发送它:它节省了费用,如对象序列化规范中所述。所以更新它并再次发送它不会影响接收方接收到的对象。

您需要调查 ObjectOutputStream.reset()ObjectOutputStream.writeUnshared()