public static InetAddress determineBindAddress(InetAddress destAddress) { ArrayList<InetAddress> removeIPv6Addresses = Network.removeIPv6Addresses(Network.removeLoopbackAddresses(Network.getLocalIpAddresses())); for (InetAddress removeIPv6Address : removeIPv6Addresses) { InetAddress inetAddress = null; try { Enumeration inetAddresses = NetworkInterface.getByInetAddress(removeIPv6Address).getInetAddresses(); while (inetAddresses.hasMoreElements()) { inetAddress = (InetAddress) inetAddresses.nextElement(); if (inetAddress.equals(destAddress)) { return inetAddress; } } } catch (SocketException e) { if (inetAddress != null) { RobotLog.v( String.format( "socket exception while trying to get network interface of %s", inetAddress.getHostAddress())); } else { RobotLog.v("exception while trying to get remote address"); } } } return determineBindAddressBasedOnWifiP2pSubnet(removeIPv6Addresses, destAddress); }
public static InetAddress determineBindAddress(InetAddress destAddress) { ArrayList removeIPv6Addresses = Network.removeIPv6Addresses(Network.removeLoopbackAddresses(Network.getLocalIpAddresses())); Iterator it = removeIPv6Addresses.iterator(); while (it.hasNext()) { try { Enumeration inetAddresses = NetworkInterface.getByInetAddress((InetAddress) it.next()).getInetAddresses(); while (inetAddresses.hasMoreElements()) { InetAddress inetAddress = (InetAddress) inetAddresses.nextElement(); if (inetAddress.equals(destAddress)) { return inetAddress; } } continue; } catch (SocketException e) { RobotLog.m254v( String.format( "socket exception while trying to get network interface of %s", new Object[] {r0.getHostAddress()})); } } return determineBindAddressBasedOnWifiP2pSubnet(removeIPv6Addresses, destAddress); }