2013-08-16 5 views
0

처음 시도 할 때 URL의 파일이 존재하는지 확인한 다음 다운로드하십시오. 그러나 그것은 나에게 "주"sun.net.ftp.FtpProtocolException 스레드에서url openstream에 연결이 너무 많습니다.

예외를 발생시킵니다 : 환영 메시지 : 421 너무 많은 연결 (2) 내가 알고있는 경우에이 IP

에서, 난 항상 연결을 닫습니다 하지만 어쨌든 충돌이 발생합니다.

private boolean exists(String URLName) throws MalformedURLException, IOException { 
    boolean result = false; 
     URL url = new URL(URLName); 
     input = url.openStream(); 
     input.close(); 
     result = true; 
    return result; 
} 

private void downloadTheFile(String path, String name) throws MalformedURLException, IOException { 
    input.close(); 
    input = new URL(path).openStream(); 
    try { 
    OutputStream out = new FileOutputStream(name + ".pdf"); 
     byte buf[] = new byte[4096]; 
     for (int n = input.read(buf); n > 0; n = input.read(buf)) { 
      out.write(buf, 0, n); 
     } 
    } finally { 
     out.close(); 
     input.close(); 
    } 
} 

누구든지 나를 도와 줄 수 있습니까?

+0

루프에서?''downloadTheFile을 (전화하는거야 어떻게 말해 줄 수 있습니까? – hexafraction

답변

1

서버에서 너무 많은 고유 연결을 만들고 있음을 알게되고 즉시 부팅됩니다. 각 파일에 대해 별도의 연결을 만들지 마십시오.

다운로드 기능을 얼마나 정확하게 호출하는지 알 수는 없지만 Apache Commons::net을 통해 지속적인 연결을 사용하십시오.

+0

글쎄, 난의 OutputStream가 공개, 감사하고 작동! – fatevil

+0

을 MarekKozlovský 우연의 일치처럼 보인다 @,하지만 더 많은 테스트를 시도 및/또는 아파치 공유지 또는 자신의 구현을 통해 연결을 재사용. – hexafraction

0

exists() 메소드를 제거하십시오. 파일이 없으면 다운로드 방법이 실패합니다. 그만하면 연결이 끊어집니다.

관련 문제