Calculate broadcast address from ip and subnet mask

后端 未结 5 651
一向
一向 2020-12-09 04:17

I want to calculate the broadcast address for:

IP:     192.168.3.1
Subnet: 255.255.255.0
=       192.168.3.255

in C.

I know the way

5条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-09 05:16

    ok whom will look for this code in the future. I have spend sometimes today as I needed this, here is the full code and it works :) simply copy and paste it and then import the required dlls.

    private IPAddress CalculateBroadCastAddress(IPAddress currentIP, IPAddress ipNetMask)
        {
            string[] strCurrentIP = currentIP.ToString().Split('.');
            string[] strIPNetMask = ipNetMask.ToString().Split('.');
    
            ArrayList arBroadCast = new ArrayList();
    
            for (int i = 0; i < 4; i++)
            {
                int nrBCOct = int.Parse(strCurrentIP[i]) | (int.Parse(strIPNetMask[i]) ^ 255);
                arBroadCast.Add(nrBCOct.ToString());
            }
            return IPAddress.Parse(arBroadCast[0] + "." + arBroadCast[1] +
                   "." + arBroadCast[2] + "." + arBroadCast[3]);
        }
    
    
        private IPAddress getIP()
        {
            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    return ip;
    
                }
            }
            return null;
        }
    
        private IPAddress getSubnetMask()
        {
            NetworkInterface[] Interfaces = NetworkInterface.GetAllNetworkInterfaces();
            IPAddress ip = getIP();
            foreach (NetworkInterface interf in Interfaces)
            {
    
                UnicastIPAddressInformationCollection UnicastIPInfoCol = interf.GetIPProperties().UnicastAddresses;
    
                foreach (UnicastIPAddressInformation UnicatIPInfo in UnicastIPInfoCol)
                {
                    if (UnicatIPInfo.Address.Equals(ip))
                        return UnicatIPInfo.IPv4Mask;
                }
    
            }
    
            return null;
    
        }
    

    Then just call it like :

    IPAddress  broadcastip = CalculateBroadCastAddress(getIP(), getSubnetMask());
    

    Happy coding :)

提交回复
热议问题