
com.cosylab.epics.caj.util.nif.InetAddressUtilV6 Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jca Show documentation
Show all versions of jca Show documentation
JCA is an EPICS Channel Access library for Java. For more information concerning EPICS or Channel Access please refer to the <a href="http://www.aps.anl.gov/epics">EPICS Web pages</a> or read the <a href="http://www.aps.anl.gov/epics/base/R3-14/8-docs/CAref.html">Channel Access manual (3.14)</a>.
<p>This module also includes CAJ, A 100% pure Java implementation of the EPICS Channel Access library.</p>
/*
* 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,
* .
*
* 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.cosylab.epics.caj.util.nif;
import java.net.InetAddress;
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;
/**
* InetAddress
utility methods.
* This class needs Java 6 or never. To compile on older version, simply remove this file.
* CAJ will detect this and use defaults.
* @author Matej Sekoranja
* @version $Id: InetAddressUtil.java,v 1.4 2009/12/22 21:50:26 msekoranja Exp $
*/
public class InetAddressUtilV6 {
/**
* 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();
try
{
if (net.isUp())
{
List interfaceAddresses = net.getInterfaceAddresses();
if (interfaceAddresses != null)
{
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);
}
}
}
}
} catch (Throwable th) {
// some methods throw exceptions, some return null (and they shouldn't)
// noop, skip that interface
}
}
// fallback to loop
if (list.size() == 0)
list.add(new InetSocketAddress(InetAddress.getLoopbackAddress(), port));
InetSocketAddress[] retVal = new InetSocketAddress[list.size()];
list.toArray(retVal);
return retVal;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy