Hi Chris,

This works.  When this property is set in my application always , it will 
resolve to IPv6 address.
Suppose if in application some code flow path needs IPv4 address resolution and 
some other code path needs IPv6 address resolution for different hostnames, 
then this is not possible.
So, if there are different method to resolve differently for IPv4 and IPv4 
address , that would be helpful.

Thanks & Regards
Shekar

From: Chris Hegarty [mailto:chris.hega...@oracle.com]
Sent: Thursday, August 23, 2018 2:42 PM
To: S, Chandra Shekar (CDI R&D) <chandra-sheka...@hpe.com>
Cc: net-dev@openjdk.java.net; Pallavi Sonal <pallavi.so...@oracle.com>
Subject: Re: Regarding the Enhancement request for a new method (ex : 
getIPv6AddressByName) to give IPv6 address for the given host name.

Hi Shekar,

Have you tried `java.net.preferIPv6Addresses` [1]? Setting
that property to `true` should result in IPv6 addresses, if
there are any,  being returned before IPv4 addresses.

-Chris.

[1] 
https://docs.oracle.com/javase/10/docs/api/java/net/doc-files/net-properties.html#Ipv4IPv6


On 21 Aug 2018, at 18:21, S, Chandra Shekar (CDI R&D) 
<chandra-sheka...@hpe.com<mailto:chandra-sheka...@hpe.com>> wrote:

Hello Experts,

This is regarding the Enhancement request  for a new method to give IPv6 
address for the given host name.
Currently we have a method 
InetAddress.getByName<https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByName(java.lang.String)>(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html>
 host) to give the IPAddress for the given hostname.

If the DNS server resolves to both IPv4 and IPv6 addresses for the given 
hostname, this method will return only the first IPv4 address.
Actually this method queries the DNS server first for the IPv4 addresses (ie, 
with option -query=A) and then queries the DNS server for the IPv6 (ie, with 
option -query=AAAA) addresses.
It consolidates the both IPv4 address and IPv6 address into the list, and 
returns the first address from the consolidate list. As the IPv4 address will 
be the first in the list , it always returns the IPv4 address only.

If we need to get only IPv6 address for the given host name (especially in the 
IPv6Only environments), currently there is no such method/api for this.
Currently we have method 
InetAddress.getAllByName<https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getAllByName(java.lang.String)>(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html>
 host), which gives both IPv4 address and IPv6 address  list, by iterating this 
we can get the IPv6 address resolution.
But it is nice to have a separate method to get/resolve to IPv6address. Ex : 
getIPv6AddressByName(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html>
 host) or 
getByName<https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByName(java.lang.String)>(String<https://docs.oracle.com/javase/7/docs/api/java/lang/String.html>
 host, AddressType addressType) – addressType will be passed by the call get 
IPv4/IPv6 address.
This new method can query the DNS only for the IPv6 address (ie, with option 
-query=AAAA) which will have performance improvement over other.

Thanks & Regards
Shekar

Reply via email to