2 개의 공용 인터페이스가있는 상자에 rmi 서버가 있습니다. 클라이언트가 연결되면 항상 UnicastServerRef2 [liveRef: [endpoint:[192.x.x.x:xxxx
에 잘못된 ip 주소를 반환합니다. 클라이언트의 연결은 다른 인터페이스로 이동합니다 (10.x.x.x
). 아무도 이것을 해결하는 방법을 알고 있습니까? 스텁을 바인딩 할 때 ip를 지정하고 싶지 않습니다. 그런 다음 작동하지만 모든 인터페이스 (0.0.0.0
)에서 수신 대기합니다.2 개의 인터페이스가있을 때 RMI 엔드 포인트 주소 지정
내가 java.rmi.server.hostname=myhostname
를 지정하고 ServerSocket[addr=myhostname/10.x.x.x,localport=xxxx]
을 만들 RMIServerSocketFactory
를 사용하는 경우, 그것은 여전히 원격 엔드 포인트와 클라이언트에 192.x.x.x
ADRESS을 반환합니다. 이상하게도 난 두 개의 다른 포트에 두 개의 UnicastRemoteObjects
개체가 있고 그 중 하나는 올바른 주소를 반환하고 다른 하나는 반환하지 않습니다.
어떤 아이디어로 연결이 만들어진 인터페이스의 IP를 사용하여 끝점을 반환하도록 할 수 있습니까?
답변 해 주셔서 감사합니다. 하지만 클라이언트가 사용하는 인터페이스의 IP를 자동으로 반환하고 싶습니다. 그래서 나는 로컬 네트워크 주소를 사용하는 클라이언트와 다른 사람들이 인터넷을 통해 연결할 수 있습니다. 또는 적어도 명시 적으로 응용 프로그램에서 ip를 설정하지 않고도/etc/hosts에 설정된 호스트 이름 만 지정하고 싶습니다. – morja
사실, 호스트 이름과 함께 작동합니다. 문제는 스텁에 바인딩하기 전에 java.rmi.server.hostname을 설정했지만 UnicastRemoteObject를 만든 후에 발생했습니다. 귀하의 답변 주셔서 감사합니다! – morja
흠, 아니, 죄송합니다, 아직 작동하지 않습니다. 어떤 이유로 든 하나의 연결에는 작동하지만 다른 하나는 잘못된 IP 주소를 얻습니다. – morja