如何确定计算机的IP地址是否属于指定的网络地址?

时间:2011-03-11 00:58:38

标签: c# network-programming

        string myHost = System.Net.Dns.GetHostName();

        string myIP = 
          System.Net.Dns.GetHostByName(myHost).AddressList[0].ToString();
        MessageBox.Show(myIP);

        TextReader read = new StreamReader(//Text file with network address);
        var ip = read.ReadLine();
        read.Close();

        if (ip == //Need help with this part)
            MessageBox.Show("You are on the network");
        else
            MessageBox.Show("You are not on the network");

我可以获取我的计算机地址但我需要将其与网络地址进行比较,如果它属于该网络地址以显示它是。

4 个答案:

答案 0 :(得分:0)

如果您的IP无效时程序崩溃,您可以将其更改为检查该异常的try catch(运行并崩溃以查找异常)。这就是我在Lidgren多人游戏中验证IP的方法。

虽然这可能不是最好的方法,但它确实有用。

答案 1 :(得分:0)

以下问题的接受答案告诉您需要知道的一切:

How to get the IP address in C#?

答案 2 :(得分:0)

我推荐可以在codeplex上找到的IPNetwork实用程序。它非常灵活和强大。它将允许您执行很多操作,并确定给定IP地址的网络就是其中之一。

http://ipnetwork.codeplex.com/

代码应如下所示:

    var ipnetwork = IPNetwork.Parse(ip);
    if (ipnetwork.Contains(myIp)) {
        // do some work...

答案 3 :(得分:0)

查看ip是否在范围内的一种简单方法是将ip以及范围的开始和结束转换为long(可以编写一个函数以便从IP地址转换为long)。然后查看ip是否在两个数字之间。

例如:

要检查的IP:172.17.1.25 - 转换为long - > 172017001025

范围:

开始 - 172.0.0.0 - 转换为长 - > 1720亿

结束 - 172.255.255.255 - 转换为长 - > 172255255255

现在只检查ip是否在起始值和结束值之间。