如何通过套接字更新 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()
。
// 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()
。