Следующий простой код прекрасно работает в Windows 7, возвращая полное имя (например, «myhost.x.com»).Однако при запуске на компьютерах с Windows XP в той же сети он возвращает только имя хоста (например, «myhost»).Это известная проблема?Любые обходные пути?
hostName = InetAddress.getLocalHost().getCanonicalHostName();
Контекст: хотите сопоставить процессы с того же исходного компьютера на удаленном сервере.Клиентские процессы передают свое имя хоста, чтобы сервер мог группировать запросы с одного и того же клиентского компьютера, даже если они поступают из разных приложений на этом компьютере.Мы видим несоответствия для приложений, работающих на клиентских компьютерах, использующих XP, когда один клиентский процесс является Java, а другой - C #, потому что один полностью квалифицирован, а другой - нет.Клиенты Windows 7 работают нормально.Первоначально считалось, что .NET не получает полное доменное имя в XP, но теперь это, кажется, клиенты Java, использующие приведенный выше код.
Обновление: на той же машине XP клиент C ++ (не .NET)также в состоянии получить полное имя.Таким образом, кажется, что из трех, только Java на этом компьютере не может получить полное доменное имя с помощью этого API.Это Java 1.6.0_20-b02.Кроме того, код на Java и C ++ также должен работать на платформах, отличных от Windows.