如何将字符串转换为System.Net.IPAddress

时间:2012-08-20 12:36:58

标签: c# .net ip-address

如何将字符串转换为System.Net,C#/。net 3.5中的IPAddress

我试过这个,但我收到此错误“无法将类型'字符串'转换为'System.Net.IPAddress'”

 public void Form1_Load(object sender, EventArgs e)
    {
        IPHostEntry host;
        string localIP = "?";
        host = Dns.GetHostEntry(Dns.GetHostName());
        foreach (IPAddress ip in File.ReadAllLines("proxy.txt"))
        {
            if (ip.AddressFamily.ToString() == "InterNetwork")
            {
                localIP = ip.ToString();
                textBox1.Text = ip.ToString();
            }
        }

   }

6 个答案:

答案 0 :(得分:17)

使用静态IPAddress.Parse方法将string解析为IPAddress

foreach (var ipLine in File.ReadAllLines("proxy.txt"))
{
    var ip = IPAddress.Parse(ipLine);
    if (ip.AddressFamily.ToString() == "InterNetwork")
    {
        localIP = ip.ToString();
        textBox1.Text = ip.ToString();
    }
}

如果文件中的行不总是有效的IP地址,您可能需要考虑使用TryParse来避免抛出任何异常。

答案 1 :(得分:4)

IPAddress.Parse方法接受字符串。

foreach (string line in File.ReadAllLines("proxy.txt"))
{
    IPAddress ip = IPAddress.Parse(line);
    // ...
}

答案 2 :(得分:3)

foreach (IPAddress ip in File.ReadAllLines("proxy.txt").Select(s => IPAddress.Parse(s))) {
    // ...
}

答案 3 :(得分:2)

您可以使用IPAddress.Parse方法 例如:

private static void parse(string ipAddress)
  {
    try
    {
      IPAddress address = IPAddress.Parse(ipAddress);
    }

答案 4 :(得分:1)

您可以使用IPAddress.Parse来执行此操作。

答案 5 :(得分:1)

你可以做的一件事是...... 在foreach循环中,您需要一个与您的集合匹配的实例。我的意思是,如果你有一个字符串列表,例如:

    List<string> lMyList    

程序员无法使用int或double的实例迭代此列表...

    foreach (int lIterator in lMyList) 
    { // code 
    }

这根本不起作用,它会引发关于&#34; int&#34;的语法错误。不是一种&#34;字符串&#34;。

要解决这个问题,您需要像这样遍历列表

    foreach (string lIterator in lMyList)
    { // code
    }

现在,问你的问题。 IPAddress是它自己的类和类型。人们不能简单地将它变成一种字符串。但是,有办法解决这个问题。将字符串显式转换为IP地址。但是,您需要首先遍历列表。

    foreach (string lLine in File.ReadAllLines("proxy.txt"))
    {
        // Code In Here
    }

这将迭代文本文件中的所有行。由于它是一个文本文件,因此返回一个字符串列表。为了迭代字符串列表,程序员需要一个字符串局部变量来迭代它。

接下来,您需要将当前字符串解析为本地IP地址实例。有几种方法可以做到这一点,1)你可以简单地解析(System.Net.IPAddress.Parse())字符串,或者你可以将TryParse(IPAddress.TryParse())字符串写入IPAddress。

    Method One:
    // This will parse the current string instance to an IP Address instance
    IPAddress lIPAddress = IPAddress(lLine);

    Method Two:
    IPAddress lIPAddress; // Local instance to be referenced
    // At runtime, this will "Try to Parse" the string instance to an IP Address.
    // This member method returns a bool, which means true or false, to say,
    // "Hey, this can be parsed!". Your referenced local IP Address instance would
    // have the value of the line that was parsed.
    if (IPAddress.TryParse(lLine, out lIPAddress)) 
    {
        // Code
    }

好的,现在我们已经解决了这个问题。让我们完成这件事。

    // Iterates over the text file.
    foreach (string lLine in File.ReadAllLines("proxy.txt"))
    {
        // Create a local instance of the IPAddress class. 
        IPAddress lIPAddress;
        // Try to Parse the current string to the IPAddress instance.
        if (IPAddress.TryParse(lLine, out lIPAddress))
        {
            // This means that the current line was parsed.
            // Test to see if the Address Family is "InterNetwork"
            if (string.Equals("InterNetwork", lIPAddress.AddressFamily.ToString()))
            {
                TextBox1.Text = lIPAddress.ToString();
            }
        }
    }

我希望这有帮助!