2017-11-19 15 views
1

동일한 컴퓨터에서 잘 작동하는 매우 간단한 RMI 서버/클라이언트가 있습니다. 한 대의 컴퓨터에서 서버를 실행하려고하고 있고 다른 서버의 클라이언트가 모두 같은 네트워크에 있습니다. 내가 사용하는 IP를 네트워크 속성을 설정 한 : 두 시스템에RMI 원격 연결이 실패합니다.

System.getProperty("java.rmi.server.hostname", "192.168.x.x"); 

& 장애인 방화벽하지만 연결이 계속 실패. execption이 잡히지 그러나

Registry registry = LocateRegistry.getRegistry("192.168.x.x",8888); 
    ITest stub = (ITest) registry.lookup("ITest"); 

은으로 192.168.xx 대 주어진 하나의 예와 같은 아닌 IP를 보여줄 것 같다

클라이언트 코드는 (서버 8888에 createRegistry 사용) 서버에 연결하려면이 옵션을 사용하여 169.254.xx로 :

당신은 배경에 rmiregistry의를 시작하지 않은 :

Client exception: java.rmi.ConnectionException: Connection refused to host: 169.254.x.x; nested exception is ... 
+0

실제 또는 가상 네트워크 인터페이스가 여러 개 설치되어 있습니까? – Marged

+0

@Marged는 네트워크 어댑터를 의미합니까? 그래, 그 중 4 2가 가상입니다 –

+1

'System.getProperty'는 속성을 설정하지 않습니다. 반환 값을 버리면 아무 것도 유용하지 않습니다. 서버를 시작한 후 플랫폼에 따라 netstat -p 또는 lsof 등을 사용하여 수신 대기중인 주소와 포트를 정확하게 확인하십시오. –

답변

1

dave_thompson_085는 내가 완전히 놓친 오타였던 System.getProperty이라고 말했기 때문에 말했습니다. System.setProperty을 호출하면이 문제가 해결되고 현재 작동합니다.

0

이 예외에 대한 이유 중 몇 가지가있을 수 있습니다.
잘못된 포트 번호로 연결하려고합니다.
방화벽이 연결을 차단했을 수 있습니다.

라우터 방화벽 제한 사항이 있는지 확인하고 사용하지 않도록 설정했는지 확인하십시오.

+0

내가 아는 한 LocateRegistery.createRegistry가 나를 위해 서비스를 시작합니다. 서버와 클라이언트 모두에서 포트 번호가 정확합니다 (8888). 또한 두 컴퓨터에서 방화벽을 비활성화했습니다. –

+0

레지스트리를 시작하지 않거나 잘못된 포트 번호를 사용하면이 오류가 발생하지 않습니다. – EJP