C# 为检查定义多个IP
我真的不知道这个标题该怎么说。我想做的是:我在Mysql中有一个表,其中有一列用于我添加的IP。如果我的表中有IP,我不希望播放机连接到我的服务器。 表如下所示,作为示例:C# 为检查定义多个IP,c#,mysql,C#,Mysql,我真的不知道这个标题该怎么说。我想做的是:我在Mysql中有一个表,其中有一列用于我添加的IP。如果我的表中有IP,我不希望播放机连接到我的服务器。 表如下所示,作为示例: # | IP 1 | 127.0.0.1 2 | 128.0.0.1 3 | 129.0.0.1 4 | 130.0.0.1 我想,用C,让它检查连接人的ip是否在上面,然后停止连接。我已经定义了玩家IP,例如plr.Account.IP。如何准确定义数据库中要检查的每个
# | IP
1 | 127.0.0.1
2 | 128.0.0.1
3 | 129.0.0.1
4 | 130.0.0.1
我想,用C,让它检查连接人的ip是否在上面,然后停止连接。我已经定义了玩家IP,例如plr.Account.IP。如何准确定义数据库中要检查的每个IP?我尝试过几种方法,但都失败了,我对编码这方面还是相当陌生,我只是想寻求一些帮助
编辑:
好吧,对不起,我想我说错了。我参加了一个开发小组的一个小游戏,主要是为了练习,这样我可以做得更好。我删除了我试图做的事情,因为它失败得很惨,我无法用它重建。我可能应该把它注释掉,但我觉得不值得。我想做点像这样的东西
If(player.Account.IP == BannedIP)
{
//banned
}
差不多吧。BannedIP将是我放在那里的MySQL的任何IP。我正在尝试Apomene现在发布的内容。在程序开始时,将IP保存在列表中:
List <string> IPs=new List<string>();
MySqlConnection conn = new SqlConnection("yourconnectionstring");
conn.Open();
MySqlCommand cmd = conn.CreateCommand();
string command = "Select IP from myIPTable";
cmd.CommandText = command;
MySqlDataReader sqlreader = cmd.ExecuteReader();
while (sqlreader.Read())
{
IPs.Add(sqlreader[0].ToString());
}
如果您在读取记录的地方提供一段代码,会更方便。我可以帮助你更快更准确。请用你目前正在做的事情发布你的代码。你是在问如何从C查询MySQL数据库吗?或者如何在SQL中形成查找查询最好添加您迄今为止的最佳尝试,并解释为什么它没有做您希望它做的事情,除了@DriesVB所说的,为什么您要通过IP计数控制max player登录?如果AccountIsLoggedIn,为什么不阻止登录呢?你似乎在想相反的事情;推送用户IP,不拉列表。您可以执行select existsselect*from ips where ip='userip'语句,让DB在表中查找ip,然后根据结果执行操作。
...
if (IPs.Contains(plr.Account.IP)
{
///dont allow use to make any actions
}
var cmd = new MySqlCommand("SELECT * FROM Ips WHERE ip=@playerip", MySqlConn.conn);
cmd.Parameters.AddWithValue("@playerip", plr.Account.IP);
cmd.Prepare();
MySqlDataReader res = cmd.ExecuteReader();
if (res.HasRows)
{
// banned
}