「java怎么踢人」java怎么操作
本篇文章给大家谈谈java怎么踢人,以及java怎么操作对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、我做java的简易聊天室,已经可以群聊和私聊,如何把创建房间加进去,且只能同一个房间里才能群聊和私聊?
- 2、JAVA聊天室小程序服务器端怎么实现踢人功能!!
- 3、java做到后一个人登陆同账号把之前的人踢下线
- 4、jsp聊天室管理员功能的实现
- 5、要求编写一个java程序:
我做java的简易聊天室,已经可以群聊和私聊,如何把创建房间加进去,且只能同一个房间里才能群聊和私聊?
我说下思路:
1、客户端创建房间时给每个房间分配惟一的一个房间ID,房间是公开的,每个连接的客户端都可以看到,房间属性,比如密码,比如黑名单,房间保存在Server内存当中,如果你使用了集群,建议存储到分布式缓存当中(Redis是最好的选择,其次是memcached),当创建完成后,将房间信息发送给所有客户端。新客户端连接进来时,客户端要主动从服务端拉取房间信息。建议采用服务端主动通知(房间增减,服务端主动通知给所有客户端)和客户端定时轮询(客户端起个定时任务,每隔一定时间主动向服务端拉取房间列表)的方式来保证房间列表的动态更新。
2、当客户端选择加入房间时,如果设置有加入条件,比如密码,那就提示客户端输入,如果是其他条件就判断加入客户端是否符合这个条件。服务端保存房间同客户端的关联关系(可以设计成一对多,也就是一个客户端只能在一个房间聊天,也可以设计成多对多,一个客户端可以同时加入多个房间聊天,主要看设计),并将这个消息通知给这个房间所有的客户端列表“欢迎***进入房间”(消息的发送者为系统,房间ID这个房间的ID,接收人无,表示是这个房间的公开消息,消息内容即:欢迎***进入房间。)
3、把聊天内容当成消息的话,那消息应该有这样的属性,发送人,房间ID(如果没有房间ID就当成系统公告消息,在所有房间显示),接收人(如果没有指定接收人,则是公开消息,如果有接收人,就是私聊消息,只能在同一个房间私聊,那在发消息的时候要判断下接收客户端的是否在这个房间列表当中)。
4、再来说消息路由设置,当客户端发送消息时,根据房间ID,找到这个这个房间内所有的客户端列表,如果没有指定接收人,那消息就推送给这个房间关联的所有客户端,如果指定有接收人,接收人不在这个房间,直接提示“***已经离开”,如果还在就把消息推送给这个指定的客户端。
5、房间的管理:踢人,把这个客户端从房间同客户端关联关系解除,并在房间显示消息“***被踢出房间”等等
JAVA聊天室小程序服务器端怎么实现踢人功能!!
这个就是服务器的一个接口,调用服务器的一个踢人的方法,服务器把此人从聊天列表中删除了就好了
java做到后一个人登陆同账号把之前的人踢下线
最后登录成功后,服务器端向之前登录的设备发送通知,设备接收到通知后,自动退出程序
最后登录成功后,之前登录的设备在接受到服务端通知之前,又向服务端请求数据,则此时服务端返回给之前登录的设备退出程序的指令,接受到退出指令后退出程序。
jsp聊天室管理员功能的实现
既然要用到踢人,我想首先范围应该是application,,管理员点踢人之后,给application设置个属性,增加一个list,把客户的id添进去,客户端页面有一个一直读取这个list的方法(自动刷新),如果其中有自己的id,就跳转到另一个页面,然后注销session,把自己名字从那个list中消除(为下次登陆).
要求编写一个java程序:
这个讲得麻烦,其实只是求循环顺序为9 的倍数的位置 。剩余的就是地球人的位置。
代码待会儿试着写个看看。
被扔出的位置已经算出来了。
第1轮抛出:位置:09
第2轮抛出:位置:18
第3轮抛出:位置:27
第4轮抛出:位置:06
第5轮抛出:位置:16
第6轮抛出:位置:26
第7轮抛出:位置:07
第8轮抛出:位置:19
第9轮抛出:位置:30
第10轮抛出:位置:12
第11轮抛出:位置:24
第12轮抛出:位置:08
第13轮抛出:位置:22
第14轮抛出:位置:05
第15轮抛出:位置:23
整下整个的代码。
import java.util.ArrayList;
import java.util.List;
public class CirclePlus {
private ListString seats = new ArrayListString();
//初始化
public CirclePlus(){
if(seats.size()=0){
for(int i=0;i30;i++){
seats.add("位置:"+((i+1)=10?(i+1):"0"+(i+1)));
}
}
}
//踢人方法
public void Kick(int num){
//记录当前被踢人的座位
int tempseat = 0;
//当前要踢的座位
int nowseat = 0;
//记录当前是第几轮
int loop = 1;
//当是15轮时退出
while(loop=15){
//要踢的人的座位号是上次被踢的座位号+num,-1是因为LIST的编号比真实座位号小1
nowseat = tempseat+num-1;
// System.out.println("nowseat=="+nowseat+"\ntempseat=="+tempseat+"\nloop=="+loop);
//如果要踢的超出当前人数范围,则从第一个人开始重新算起(减掉当前人数)
if(nowseat=seats.size()){
//为符合上面踢人座位号(nowseat)计算,除去减掉当前人数(seats.size())外,要加回修正值(上面减掉的1),
//以保证 要踢人的座位号(nowseat) 是正确的
tempseat=nowseat-seats.size()-num+1;
}else{
//踢人
System.out.println("第"+loop+"轮抛出:"+seats.remove(nowseat));
//保存当前被踢的座位号
tempseat = nowseat;
//轮次增加
loop++;
}
}
System.out.println("踢人后剩余的安全座位号:");
for(String string: seats){
System.out.println(string);
}
}
public static void main(String[] args) {
CirclePlus cp = new CirclePlus();
cp.Kick(9);
}
}
OK了,换成while循环才弄好。。用for循环直接算座位号误差太大了,还是一个个算。
关于java怎么踢人和java怎么操作的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。