2013-08-16 4 views
1

FTP 사이트에 연결하고 파일을 업로드/다운로드하려고합니다. 브라우저와 FileZilla를 통해 연결할 수있었습니다. 그래서 나는 그것이 효과가 있음을 확신합니다. 하지만 내 Java 프로그램을 통해 액세스하려고하면이 예외가 발생합니다. 제발 어떤 도움을 주시면 감사하겠습니다.
내 자바 클래스 (생성자) 다운로드 업로드
가 // 방법ftp 연결 시간 초과 예외

public TriFtpClient() { 
    tri = new FTPClient(); 
    String host = InkAndTonerProperties.getSingleton().getProperty(
      "ftpDomain"); 
    int reply; 
    try { 
     tri.addProtocolCommandListener(new PrintCommandListener(
       new PrintWriter(System.out), true)); 
     tri.connect(host, 21); 
     log.debug("default port = " + tri.getDefaultPort()); 
     reply = tri.getReplyCode(); 
     if (!FTPReply.isPositiveCompletion(reply)) { 
      tri.disconnect(); 
      log.error("Exception in connecting to FTP Server"); 
     } 
     tri.login(
       InkAndTonerProperties.getSingleton().getProperty(
         "ftpUserId"), InkAndTonerProperties.getSingleton() 
         .getProperty("ftpPassword")); 
     tri.enterLocalPassiveMode(); 
    } catch (IOException e) { 
     if (tri.isConnected()) { 
      log.error("it is connected."); 
      try { 
       tri.disconnect(); 
      } catch (IOException f) { 
       // do nothing 
      } 
     } 
     log.error("Failed to connect and login", e); 
    } 
} 

// 방법

스택 추적

java.net.ConnectException: Connection timed out: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
+0

tr.connect()에 도달하면 코드가 실패합니다. 연결을 설정할 수 없습니다. – user2689946

답변

1

FTPClient에 대한 디버그 로그를 사용하고 있는지 확인 패시브 모드로 들어가는 동안 타임 아웃이 발생합니다. 대부분의 경우 수동 모드로 들어가는 동안 연결 시간 초과가 발생합니다.

연결 초과 아래 로그 시간 체크 IP에있는 경우 : 첫 번째 블록 (10) 또는 (172) 또는 (192)로 시작되는 경우

Entering Passive Mode (xxx,xxx,xxx,xxx,xxx,xxx) 

, 서버가 사설 IP를 사용하여 연결을 요청하는 패시브 모드로 전환 할 때. 공용 IP 주소를 사용하려면 서버 측의 수동 주소를 변경해야합니다.

+0

연결을 만들 때 시간 초과가 발생하지만 수동 모드로 전환 할 때는 시간 초과가 발생하지 않습니다. 나는 아직 거기에 갈 수 없다. – user2689946

+0

그러면 문제는 다른 것입니다. 다음을 확인할 수 있습니다. 도메인 이름 또는 IP를 사용하여 연결을 시도하고 있는지 확인하십시오 (이 경우 일반적으로 Unknon 호스트 예외가 발생합니다. 시간 초과 아님). 도메인 이름을 사용하는 경우 IP로 변경하고 시도하십시오. 브라우저에 프록시가 구성되어 있는지 확인하십시오. – Prem

+0

감사합니다. Prem for the input. 여기에 방화벽 문제가 있습니다. 아직도 그것을 파악하려고 노력 중 – user2689946