如何在C#/ asp.net中将IP地址拼接成网络地址?

时间:2015-03-30 17:26:33

标签: c# asp.net

我正在开发一个服务台应用程序,它可以在PC的本地网络上返回各种信息。

我想要做的是获取PC的IP地址 - 比如说10.20.30.1 / 24,然后获取网络八位字节。在这种情况下10.20.30。但是,即使网络类似于100.15.1,它仍然需要工作。

然后我想添加不同的设备号码。例如,如果网络中的所有交换机都按策略落在230-235范围内,我希望能够循环并ping那些寻找活动交换机的数字。

现在我只与/ 24网络合作。

到目前为止,我正在将PC的IP地址拉得很好,但是我对如何继续下去有点迷失..我应该将IP更改成字符串并使用某种正则表达式方法去除前三个八位字节?感觉有点笨重。

我不介意阅读新的方法等,我只是想指向正确的方向,可以这么说。

3 个答案:

答案 0 :(得分:1)

只需

var s = "10.20.30.1 / 24";
s = s.Substring(0, s.LastIndexOf(".")); //"10.20.30"

答案 1 :(得分:1)

您应该使用解析ipnetworks的IPNetwork2 nuget包。

  

https://www.nuget.org/packages/IPNetwork2/

     

https://github.com/lduchosal/ipnetwork

IPNetwork ipnetwork = IPNetwork.Parse("10.20.30.1/24");

Console.WriteLine("Network : {0}", ipnetwork.Network);

输出

Network : 10.20.30.0

玩得开心!

答案 2 :(得分:0)

正则表达式方法不起作用,除非网络地址是8位倍数。对于a.b.c.d / n的网络地址,您需要做的是创建一个带有n-1的位掩码,然后按位 - 并将其添加到您要测试的IP地址。

因此mask = 0xffffffff << (32-n)为您提供位掩码,然后IPAddress_as_uint && mask为您提供网络部分。