Java 如何通过套接字更新类
Java 如何通过套接字更新类,java,sockets,serialization,objectinputstream,objectoutputstream,Java,Sockets,Serialization,Objectinputstream,Objectoutputstream,//客户端源代码 而(!isStop){ 试一试{ Object ob=mc.getOis().readObject(); 试试{ 消息=(字符串)ob; }catch(ClassCastException e){ 试一试{ 用户=(用户)ob; mc.user=(user)ob; message=“无”; }捕获(ClassCastException ee){ 房间=(房间)ob; 设置室(室); System.out.println(“房间进来”); 对于(int i=0;i您总是发送相同的
//客户端源代码
而(!isStop){
试一试{
Object ob=mc.getOis().readObject();
试试{
消息=(字符串)ob;
}catch(ClassCastException e){
试一试{
用户=(用户)ob;
mc.user=(user)ob;
message=“无”;
}捕获(ClassCastException ee){
房间=(房间)ob;
设置室(室);
System.out.println(“房间进来”);
对于(int i=0;i您总是发送相同的对象,因此序列化实际上不会重新发送它:正如对象序列化规范中所述,它节省了资源。因此更新并再次发送它不会影响接收器接收到的对象
您需要调查ObjectOutputStream.reset()
或ObjectOutputStream.writeUnshared()
哦..我们解决了它。我们的团队因为你而非常高兴。你拯救了我们的项目。如果答案对你有帮助,你可能也愿意接受它!请在这里查看如何接受答案->。@ParkJ否。我解决了它。你应用了我发布的解决方案。如果你发现它有用,你应该投票表决,如果它解决了你的问题,你至少应该反对我接受它。不要在这里张贴文字图片。张贴文字。
// 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 );
}
}
}