代码之家  ›  专栏  ›  技术社区  ›  JCCyC

在C#中操作IPv4地址的函数?

  •  0
  • JCCyC  · 技术社区  · 17 年前

    我正在检查System.Net.IPAddress类,但它似乎不足以完成任务。有什么建议吗?

    1 回复  |  直到 17 年前
        1
  •  3
  •   Daniel LeCheminant    17 年前

    我不知道有什么内置函数,但你可以很容易地自己计算出来

    static IPAddress ComputeBroadcastIP(IPAddress ip, IPAddress netmask)
    {
        byte[] ipBytes = ip.GetAddressBytes();
        byte[] maskBytes = netmask.GetAddressBytes();
        byte[] broadcastBytes = new byte[ipBytes.Length];
    
        for (int i = 0; i < broadcastBytes.Length; i++)
        {
            broadcastBytes[i] = (byte)(ipBytes[i] | ~maskBytes[i]);
        }
    
        return new IPAddress(broadcastBytes);
    }
    

    你也可以这样做

    IPAddress broadcast = new IPAddress((ip.Address | (~mask.Address)) & 0xffffffff);
    

    但是 .Address 属性已弃用。

    请注意,要将“1.2.3.4”之类的字符串转换为 IPAddress ,你可以打电话 IPAddress.Parse ,例如。

    IPAddress foo = IPAddress.Parse("1.2.3.4");