2016-08-23 3 views
1

다른 프로그램과 통신하기 위해 로컬 포트를 수신 대기하는 Java 응용 프로그램을 개발 중입니다. 일반적으로 127.0.0.1:8808을 말합니다.Java는 프로그래밍 방식으로 REAL 루프백 주소를 얻습니다.

내 고객 중 한 명이 Citrix 환경을 사용 중이며 MS 원격 데스크톱 환경과 같아 여러 사용자가 같은 컴퓨터에 동시에 로그인 할 수 있습니다.

이러한 터미널 서버 사용자는 하나의 루프백 주소를 공유합니다. 즉, 내 응용 프로그램을 실행하는 첫 번째 사용자 만 성공적으로 127.0.0.1:8808에 바인딩 할 수 있으며 나머지는 리소스 충돌 오류가 발생합니다.

클라이언트가 "가상 루프백"을 활성화하여이 문제를 해결하려고하면이 설정은 다른 사용자에게 다른 루프백 주소를 자동으로 할당 할 수 있으며 모든 사용자는 127.0.0.2-127.0.0.255를 모두 127.0.0.1 대신 루프백 주소로 가져옵니다. 이 상황에 대한 완벽한 솔루션처럼 들립니다.

크롬 루프 및 IE와 같은 다른 프로그램에서 가상 루프백이 잘 작동한다는 것을 테스트 한 결과 TCPView 도구는 내 프로그램을 제외하고 localhost에 대한 모든 연결이 127.0.0.2로 리디렉션된다는 것을 보여줍니다.

코드에서 고정 주소 127.0.0.1을 사용하고 있기 때문에 문제가 발생할 수 있다고 생각하지만 확인해야 할 환경이 없습니다. 그래서 내 질문은 여기에 있습니다 : 내가 그런 상황에서 실제 루프백 주소를 얻는 데 사용할 수있는 자바 메서드가 있습니까, 그래서 내가 올바른 주소에 바인딩 할 수 있습니까?

미리 감사드립니다.

+0

127.0.0.1은 실제 루프백 주소입니다. 루프백으로 다른 주소를 사용할 수 있지만 이것은 대부분의 사람들이 사용하는 주소입니다. –

+0

몇 가지 조사를 수행 했습니까? http://support.citrix.com/article/CTX209237 – GhostCat

+0

@GhostCat 감사합니다. 근본 원인 일 수 있습니다. 내 고객에게 시도해 볼 것을 요청할 것입니다. –

답변

0

은 LOCALHOST를 지정하고 시트릭스는 나머지

세션에서 프로세스 간 통신을위한 루프백 주소를 사용하는 응용 프로그램의 가상 루프백 정책을 사용하여 실행중인 응용 프로그램에 가상 루프백 주소를 사용할 수 있도록하기 위해 처리합니다. 이 가상 IP 정책 설정을 사용하면 각 세션에 통신을위한 자체 루프백 주소가있을 수 있습니다. 응용 프로그램이 Winsock 호출에서 로컬 호스트 주소 (127.0.0.1)를 사용하는 경우 가상 루프백 기능 은 127.0.0.1을 127.XXX로 바꿉니다. 여기서 XXX는 세션 ID +1의 표현입니다. 예를 들어, a 세션 ID가 7 인 경우 127.0.0.8입니다. 드문 경우지만 세션 ID가 네 번째 옥텟 (255 이상)을 초과하는 경우 주소는 다음 옥텟 (127.0.1.0)에서 최대 127.255.255.255로 롤오버됩니다.

가상 루프백 기능은 프로세스가 기능을 사용하는 프로그램 목록을 지정하는 것 외에 추가로 구성을 요구하지 않습니다. 가상 루프백은 가상 IP에 종속되지 않으므로 가상 루프백을 활성화하려면 Microsoft 서버 구성이 필요하지 않습니다.

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