2011-05-04 6 views
0

Java에서 HTTP를 통해 파일을 제공하는 개인 도구를 만들고 있습니다. HTTP 서버 부분에서는 com.sun.net.httpserver.HttpServer 패키지를 사용하고 있습니다. localhost 또는 외부 호스트 이름을 사용하여 내 PC에서 연결할 때 제대로 작동하지만 외부 클라이언트에서 연결하려고 시도하면 작동하지 않습니다. 자바 기본 정책 파일이 수정되지 않고 라우터 뒤에 있기 때문에 포트가 제대로 전달된다는 점을 말씀 드리고 싶습니다. 정책 파일을 수정하려고 시도했지만 설정이 올바른지 또는 적용되었는지 여부는 알 수 없지만 유사한 문제가있는 스레드를 읽었지만 rmi를 사용하여 어떤 성공도 얻지 못했습니다. java.rmi.server.hostname 시스템 속성을 설정하여 해결되었지만 서버가 TCP를 사용하기 때문에이 경우에도 사용할 수 없다고 생각합니다.외부 클라이언트에서 Java 서버에 연결할 수 없습니다.

Settings settings = Controller.getInstance().getModel().getSettings(); 
      int port = settings.getHTTP_PORT(); 
      server = HttpServer.create(new InetSocketAddress(port), 20); 

      String cachepath = settings.getCachepath(); 
      if(!cachepath.startsWith("/")) cachepath = "/"+cachepath; 
      server.createContext(cachepath, new HTTPServerHandler()); 
          server.start(); 

사람은 내가 위해 할 수있는 일을 가리킬 수 있습니다 너희 중에 누구든지이 문제를 해결하는 경우 내가 정말 감사하겠습니다 :

다음은 서버를 초기화하는 코드입니다.

+0

나는 또한 방화벽을 사용하지 못하도록 시도했지만 여전히 운이 없다. – warwolf

+0

전달이 정확하다는 것을 어떻게 알 수 있습니까? Wireshark를 사용하여 클라이언트와 서버 모두에서 패킷 흐름을 확인하십시오. –

+0

나는 그 포트에서 다른 서버를 시작했기 때문에 제대로 전달된다는 것을 알고 있으며 그 서버는 외부에서도 작동합니다. – warwolf

답변

0

내가 연결하려는 서버가 소켓 연결이 차단 된 유일한 경우 인 것 같습니다. 나는 다른 누군가에게 그것에 접속하도록 요청했고 그것은 효과가 있었다.

관련 문제