You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字符串列表中的IP地址转换为IP.Net.IPAddress(附MySQL取IP代码)

问题:将字符串列表中的IP地址转换为IPAddress类型?

我已经通过以下C#代码从MySQL数据库读取了IP地址到字符串列表AAServerAddressList中:

public void GetServerList() { 
    //创建Sql连接 
    MySqlConnection con = new MySqlConnection(cs); 
    con.Open(); 
    MySqlCommand cmd = new MySqlCommand("Select * from servers", con); 
    //创建数据阅读器并执行命令 
    MySqlDataReader dataReader = cmd.ExecuteReader(); 
    //读取数据并存储到列表中 
    while (dataReader.Read()) { 
        AAServerAddressList.Add(dataReader["Server_IP"] + ""); 
    }
}

现在想请教如何将这个字符串列表中的IP地址转换为System.Net.IPAddress类型?


解决方案

你可以通过IPAddress.TryParse或者IPAddress.Parse方法完成转换,这里更推荐用TryParse——它能处理无效IP的情况,避免程序因格式错误抛出异常。

方法一:转换现有字符串列表

如果想基于已有的AAServerAddressList生成一个新的List<IPAddress>,可以这么写:

// 假设AAServerAddressList是List<string>类型
List<IPAddress> ipAddressList = new List<IPAddress>();

foreach (string ipStr in AAServerAddressList)
{
    if (IPAddress.TryParse(ipStr, out IPAddress ipAddr))
    {
        ipAddressList.Add(ipAddr);
    }
    else
    {
        // 这里可以处理无效IP,比如打印日志或直接跳过
        Console.WriteLine($"检测到无效IP地址:{ipStr}");
    }
}

方法二:读取数据库时直接转换

其实你也可以在读取数据的阶段就直接转换成IPAddress,省去先存字符串再转换的步骤,效率更高:

// 修改GetServerList方法,假设现在有一个List<IPAddress>类型的IPAddressList
public void GetServerList() { 
    MySqlConnection con = new MySqlConnection(cs); 
    con.Open(); 
    MySqlCommand cmd = new MySqlCommand("Select * from servers", con); 
    MySqlDataReader dataReader = cmd.ExecuteReader(); 

    while (dataReader.Read()) { 
        string ipStr = dataReader["Server_IP"].ToString();
        if (IPAddress.TryParse(ipStr, out IPAddress ipAddr))
        {
            IPAddressList.Add(ipAddr);
        }
        else
        {
            // 处理数据库中的无效IP
            Console.WriteLine($"数据库中存在无效IP:{ipStr}");
        }
    }
    // 记得关闭资源
    dataReader.Close();
    con.Close();
}

注意事项

  • IPAddress.Parse会在遇到无效IP时抛出FormatException,如果能确保所有IP格式都正确,可以用这个方法,但生产环境更推荐容错性更强的TryParse。
  • 要确保代码文件顶部引用了System.Net命名空间,否则无法使用IPAddress类。

内容的提问来源于stack exchange,提问作者LEEFFM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:23:20