2013-07-26 1 views
0

ftp 서버에서 큰 파일을 다운로드하기 위해 commons-net의 Java FTPClient 클래스를 사용하고 있습니다. 클라이언트 연결이 끊어 지거나 서버가 연결을 닫는 것과 같은 연결 오류가 감지되면 파일이 특정 오프셋에서 다운로드를 다시 시작하게하고 싶습니다. client.retrieveFile(filename, out) 파일을 다운로드하는 동안 클라이언트 연결을 닫으면 아무런 예외가 없습니다. 프로그램을 다운로드하거나 아무것도하지 않고 그냥 멈 춥니 다. 이 사건을 어떻게 유발시킬 수 있습니까? FTPConnectionClosedException을 보았지만 서버가 연결을 닫을 때만 호출됩니다.Java FTP 클라이언트의 연결이 끊어짐을 감지했습니다.

답변

0

합법적으로 완료되면 얼마만큼의 데이터를 다운로드했는지 나타낼 수있는 일종의 시퀀스 ID를 유지하고 특정 값으로 설정할 수 있습니다.

sequence=0; 
try{ 
while(notDone){ 
    n = client.retrieveFile(filename, out); //bytes read 
    sequence =+ n; 
}finally{ 
if(sequence != SPECIAL_VALUE){ 
    throw new customException(); 
    } 
} 

궁극적으로 코드가 finally 블록을 실행하고 처리 방법을 결정할 수 있습니다. 또는 fail fast 솔루션을 원할 경우 sequence이 마지막으로 업데이트 된 시간을 측정하여 시간 초과를 사용할 수 있습니다.

희망이 도움이됩니다.

관련 문제