Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中的MySql数据库中查找使用相同IP的玩家列表_Java_Sql_Search - Fatal编程技术网

在Java中的MySql数据库中查找使用相同IP的玩家列表

在Java中的MySql数据库中查找使用相同IP的玩家列表,java,sql,search,Java,Sql,Search,我在Mysql数据库中记录服务器上玩家的连接,有一个名为IPDataBase的表。我想检查一个用户是否使用具有相同IP的多个帐户 该表大致如下所示: PlayerName | IP Player1 | 0.0.0.0 Player2 | 0.0.0.1 Player1 | 0.0.0.2 当然,使用非真实的例子。我想说的是,同一个球员的名字可以在那里,但有不同的IP。因此,一旦一个播放器连接起来,它

我在Mysql数据库中记录服务器上玩家的连接,有一个名为IPDataBase的表。我想检查一个用户是否使用具有相同IP的多个帐户

该表大致如下所示:

PlayerName       |    IP

Player1          |    0.0.0.0

Player2          |    0.0.0.1

Player1          |    0.0.0.2
当然,使用非真实的例子。我想说的是,同一个球员的名字可以在那里,但有不同的IP。因此,一旦一个播放器连接起来,它就会检查同一个播放器是否已经用相同的ip登录,如果不是这样,它会插入一个新行

我现在有一个布尔方法,它应该返回是否有具有相同ip的播放器。到目前为止,我的代码是:

注意:由于它用于Bukkit插件,因此类型Player是Player,字符串Playername由Player.getName获得

public boolean checksameip(Player player, String IP){
    boolean ret = false;
    String playername = player.getName();
    try{
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/WebCom", "root", "MyPW");

        Statement stmt = (Statement) con.createStatement();

        ResultSet rs = stmt.executeQuery("SELECT PlayerName FROM IPDataBase WHERE IP='"+IP+"'");

        if(rs.next()){
        //there are results

            //have no clue what to put here :S

        }else{

            ret = false;
        }

        con.close();

    }catch(Exception e){

        logm("Could Not Send Data To MYSQL DATABASE SERVER");
    }

    return ret;
}

据我所知,你想让所有的球员谁共享相同的IP?这样做:

public String[] getPlayersWithIP(String ip) {
    try{
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/WebCom", "root", "MyPW");
        Statement stmt = (Statement) con.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT PlayerName FROM IPDataBase WHERE IP='"+ip+"'");
        HashSet<String> result = new HashSet<String>();
        int i=0;
        while(rs.next()){
            result.add(getString("PlayerName"));
        }
        con.close();
        return result.toArray(new String[0]);
    }catch(Exception e){
        logm("Could Not Send Data To MYSQL DATABASE SERVER");
        return new String[0];
    }
}

返回一个字符串数组,其中包含拥有IP的所有不同玩家姓名。如果数据库中没有具有该IP的播放机,或者抛出异常,则返回空数组。如果返回的数组大小大于1,则两个或多个具有相同IP的用户将登录到您的服务器。

将DB返回的播放机名称与传入方法中的播放机名称进行比较如何。如果有用户不是传递给方法的用户,则多个a/c已用于同一IP。

请注意,对于同一路由器后面的多个用户,IP号码将是相同的。我知道,但这并不重要。因为我不会阻止他们连接,我只会记录它。回响@ Trbjjrnravnnordel森,考虑一个典型的游戏派对,在那里你有一群人在同一个NAT路由器后面玩你的游戏…在您看来,它们都将使用单个IP。记录这个对你有什么价值?那会有用是的,但我想找出同一个ip背后的所有人,可能不止两个。。。我如何创建一个循环,返回每个使用相同ip的玩家。