「java怎么踢人」java怎么操作

博主:adminadmin 2023-03-17 03:36:08 511

本篇文章给大家谈谈java怎么踢人,以及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怎么操作的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。