繁体   English   中英

如何确定我的计算机的IP地址是否在指定的网络地址之下?

[英]How can I determine if my computer's IP address falls under a specified network address?

        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");

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

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

尽管这可能不是最好的方法,但它可以工作。

我建议可以在Codeplex上找到IPNetwork实用程序。 它非常灵活和强大。 它可以让您做很多事情,并且确定给定IP地址的网络就是其中之一。

http://ipnetwork.codeplex.com/

该代码应如下所示:

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

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

例如:

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

范围:

开始-172.0.0.0-转换为long-> 172000000000

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

现在只需检查ip是否在开始值和结束值之间即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM