getCanonicalHostName on Windows

Max (Weijun) Wang Weijun.Wang at Sun.COM
Tue Mar 4 17:07:55 PST 2008


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