Get broadcast IP addresses. - Java Network

Java examples for Network:IP Address

Description

Get broadcast IP addresses.

Demo Code

/*/* w w  w.j  av a2s. co  m*/
 * Copyright (c) 2004 by Cosylab
 *
 * The full license specifying the redistribution, modification, usage and other
 * rights and obligations is included with the distribution of this project in
 * the file "LICENSE-CAJ". If the license is not included visit Cosylab web site,
 * <http://www.cosylab.com>.
 *
 * THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, NOT EVEN THE
 * IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, ASSUMES
 * _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE RESULTING FROM THE USE, MODIFICATION,
 * OR REDISTRIBUTION OF THIS SOFTWARE.
 */
//package com.java2s;
import java.net.InetSocketAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;

public class Main {
    public static void main(String[] argv) throws Exception {
        int port = 2;
        System.out.println(java.util.Arrays
                .toString(getBroadcastAddresses(port)));
    }

    /**
     * Get broadcast addresses.
     * @param port port to be added to get socket address.
     * @return array of broadcast addresses with given port.
     */
    public static InetSocketAddress[] getBroadcastAddresses(int port) {
        Enumeration nets;
        try {
            nets = NetworkInterface.getNetworkInterfaces();
        } catch (SocketException se) {
            // fallback
            return new InetSocketAddress[] { new InetSocketAddress(
                    "255.255.255.255", port) };
        }

        ArrayList list = new ArrayList(10);

        while (nets.hasMoreElements()) {
            NetworkInterface net = (NetworkInterface) nets.nextElement();
            //if (net.isUp())
            {
                List interfaceAddresses = net.getInterfaceAddresses();
                Iterator iter = interfaceAddresses.iterator();
                while (iter.hasNext()) {
                    InterfaceAddress addr = (InterfaceAddress) iter.next();
                    if (addr.getBroadcast() != null) {
                        InetSocketAddress isa = new InetSocketAddress(
                                addr.getBroadcast(), port);
                        if (!list.contains(isa))
                            list.add(isa);
                    }
                }
            }
        }

        InetSocketAddress[] retVal = new InetSocketAddress[list.size()];
        list.toArray(retVal);
        return retVal;
    }
}

Related Tutorials