2016-08-23 6 views
1

Я разрабатываю приложение Java, которое будет прослушивать локальный порт для связи с другой программой. Обычно он будет слушать, скажем 127.0.0.1:8808.Java get REAL loopback address программно

Один из моих клиентов сообщает, что они используют среду Citrix, это похоже на среду удаленного рабочего стола MS, несколько пользователей могут одновременно войти в один и тот же компьютер.

Как вы, возможно, знаете, пользователи терминального сервера имеют один обратный адрес, это означает, что только первый пользователь, запускающий мое приложение, может успешно привязываться к 127.0.0.1:8808, другие получат ошибку конфликта ресурсов.

Мой клиент попытается исправить это, включив «виртуальный loopback», этот параметр может автоматически назначать разные запросы обратной связи для разных пользователей, каждый пользователь получит 127.0.0.2-127.0.0.255 в качестве обратного адреса вместо всех 127.0.0.1 , которые звучат как идеальное решение для этой ситуации.

Тест показывает, что виртуальный loopback хорошо работает для других программ, таких как chrome и IE, средство TCPView показывает, что любое соединение с localhost перенаправляется на 127.0.0.2, кроме моей программы.

Я думаю, проблема может быть связана с тем, что я использую фиксированный адрес 127.0.0.1 в коде, но у меня нет среды для подтверждения. Поэтому мой вопрос здесь: есть ли какой-либо метод Java, который я могу использовать для получения REAL loopback-адреса в такой ситуации, поэтому я могу привязываться к правильному адресу?

Заранее благодарен!

+0

127.0.0.1 реальный цикл обратный адрес. Вы можете использовать другие адреса в качестве обратной связи, но это тот, который используется большинством людей. –

+0

Проводили ли вы какое-то исследование; например http://support.citrix.com/article/CTX209237 – GhostCat

+0

@GhostCat Спасибо, это может быть основной причиной, я попрошу у моего клиента попробовать. –

ответ

0

Укажите LOCALHOST и Citrix будет обрабатывать остальные

Чтобы сделать виртуальный адрес обратной петли доступен для приложений, работающих в сеансах Используйте политику виртуальной обратной петли для приложений, использующих адрес замыкания на себя для межпроцессного взаимодействия. Включение этого параметра политики виртуальной IP позволяет каждому сеансу иметь собственный адрес для связи. Когда приложение использует адрес localhost (127.0.0.1) в вызове Winsock, функция виртуального loopback просто заменяет 127.0.0.1 на 127.XXX, где XXX представляет собой представление идентификатора сеанса + 1. Например, идентификатор сеанса 7 - 127.0.0.8. В маловероятном случае, если идентификатор сеанса превышает четвертый октет(более 255), адрес переходит к следующему октету (127.0.1.0) до 127.255.255.255.

Функция виртуального loopback не требует никакой дополнительной конфигурации , кроме указания в списке программ, которые используют функции . Виртуальный шлейф не имеет отношения к Виртуальный IP-адрес, поэтому настройка сервера Microsoft не требуется, чтобы включить виртуальный loopback .

https://docs.citrix.com/en-us/xenapp-and-xendesktop/xenapp-6-5/xenapp65-w2k8-wrapper/ps-publishing-landing-page/ps-pub-virtual-ip-why-use-v2.html