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