getCanonicalHostName on Windows

Christopher Hegarty - Sun Microsystems Ireland Christopher.Hegarty at Sun.COM
Wed Mar 5 01:22:52 PST 2008


I am not familiar with the Windows DNS service, but I cannot image how 
the FQDN can be retrieved without a reverse entry in the DNS server. I 
suspect that you will need to populate "Reverse Lookup Zones" with the 
names of any machines you wish to be able to get the FQDN for.

-Chris.

Max (Weijun) Wang wrote:
> 
> On Mar 4, 2008, at 10:35 PM, Christopher Hegarty wrote:
> 
>> Hi Max,
>>
>> The Java methods that you are using are correct. As it is specified 
>> "best effort" is used to determine the FQDN.
>>
>> getByName will try to do forward lookup of k1.n3.local to retrieve its 
>> address, which I assumes will succeed. Then this address is used to do 
>> a reverse lookup to determine the FQDN of the host. What name service 
>> are you using? Can you verify the response from the server to the 
>> reverse lookup?
> 
> It's the Windows DNS service automatically installed when I add the "AD 
> domain controller" role to the AD server. The "Reverse Lookup Zones" is 
> empty in the DNS Management Administrative Tools.
> 
> BTW, I have 2 domains in the Network, one is this n3.local, another is a 
> "sub-domain" n8.n3.local managed by another AD server. The client/AD 
> server/k1 all belongs to n3.local. This shouldn't confuse the client, 
> right?
> 
> Here's the output of on my client machine xp. The other machines are: 
> kdc, the AD server, and k1, the other server. D prints out 
> InetAddress.getByName(args[0]).getCanonicalHostName(). You can see that 
> getCanonicalName() costs quite some time accessing k1 and kdc. Ping is 
> fast anyway.
> 
> C:\tmp>"\Program Files\MKS Toolkit\mksnt\time.exe" java D xp
> xp.n3.local
> 
> real    0m 0.34s
> user    0m 0.06s
> sys     0m 0.22s
> 
> C:\tmp>"\Program Files\MKS Toolkit\mksnt\time.exe" java D k1
> K1
> 
> real    0m15.51s
> user    0m 0.03s
> sys     0m 0.29s
> 
> C:\tmp>"\Program Files\MKS Toolkit\mksnt\time.exe" java D kdc
> KDC
> 
> real    0m15.35s
> user    0m 0.02s
> sys     0m 0.26s
> 
> C:\tmp>ping k1
> 
> Pinging k1.n3.local [192.168.0.11] with 32 bytes of data:
> 
> Reply from 192.168.0.11: bytes=32 time<1ms TTL=128
> Reply from 192.168.0.11: bytes=32 time<1ms TTL=128
> Reply from 192.168.0.11: bytes=32 time<1ms TTL=128
> Reply from 192.168.0.11: bytes=32 time<1ms TTL=128
> 
> Ping statistics for 192.168.0.11:
>     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
> Approximate round trip times in milli-seconds:
>     Minimum = 0ms, Maximum = 0ms, Average = 0ms
> 
> C:\tmp>ping kdc
> 
> Pinging kdc.n3.local [192.168.0.1] with 32 bytes of data:
> 
> Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
> Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
> Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
> Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
> 
> Ping statistics for 192.168.0.1:
>     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
> Approximate round trip times in milli-seconds:
>     Minimum = 0ms, Maximum = 0ms, Average = 0ms
> 
> 
> Thanks
> Max
> 
>>
>> -Chris.
>>
>> Max (Weijun) Wang wrote:
>>> Hi All
>>> I have a Windows domain called n3.local, and a server called k1 in 
>>> the domain, and a client. When I call the line --
>>>     InetAddress.getByName("k1.n3.local").getCanonicalHostName()
>>> from the client, the returned string is "k1". How can I get 
>>> "k1.n3.local"? Is there anything wrong with my Windows configuration? 
>>> Or, I should use another Java method?
>>> Thanks
>>> Max
> 



More information about the net-dev mailing list