黑马程序员技术交流社区

标题: 房间(副本)服务程序是这个原理吗? [打印本页]

作者: 老衲玩IT    时间: 2013-8-23 00:01
标题: 房间(副本)服务程序是这个原理吗?
Socket连接下:
MainServer:通过玩家登陆信息,创建玩家服务线程PlayerServer,把该线程放入playersMap,新建房间时创建RoomServer线程并放入RoomList
RoomServer:被创建后把创建者(PlayerServer)线程的引用放入Players集合,通过PlayerServer发来的命令增加删除Players中的PlayerSever元素
PlayerServer:进入房间后该线程的引用放入RoomServer的Players集合,room引用对应的RoomServer对象,标记在房状态,退出房间时移除room引用。
玩家交互:处于


下面是伪代码:
class MainServer{
ServerSocket ssocket;
HashMap<String,PlayerServer> playersMap;
List<RoomServer> roomList;
while(1){
远程传来的命令做以下动作
createplayerServer();创建玩家线程
createRoomServer();创建房间线程

……
……
}

}
class RoomServer extends Thread{
HashMap<String,PlayerServer> playersMap;
Quene event;
run(){
while(房间人数不为0){
broadcast();
每休息几百毫秒移出一个event元素广播给playersMap的所有成员
……

}
}
}
PlayerServer extends Thread{
RoomServer room;
Socket socket
run(){
while(玩家在线){

在房间时按玩家远程传来的命令给room.event加入消息。
……
不在房间时做其他服务
}
}
}

作者: mf152    时间: 2013-8-28 01:07
恩  我记得是这个原理

作者: 以防万一    时间: 2013-8-31 14:22
{:soso_e176:}
亲,请问下问题是否解决?
如果已解决请及时将未解决改为已解决
如果未解决请回帖追问
三天未回复的将视为已解决

详情参考: 如何更改分类

保持队形,谢谢合作{:soso_e121:}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2