2014-05-12 5 views
1

나는 실제로 ftp 서버에서 최신 파일을 얻고 싶다. 이를 위해 현재 QFTP를 사용하여 서버에 액세스하고 필요한 정보를 검색합니다. &위한 인증 서버에QFtp 사용, 중단 명령() 명령

  • 연결 :

    이 내가 (3 분마다 같은) 할 것입니다.

  • 모든 파일을 나열하는 list() 명령.

  • list() 명령에 나열된 파일 현재 나열된 파일이 아직 다운로드되지 않았는지 확인하는 슬롯을 호출합니다. 파일의 날짜를 사용하고 있는지 확인합니다. 파일이 최신 버전이면 다운로드 할 수 있습니다.

이렇게 작동합니다. 하지만 서버에 수천 개의 파일이 있고 각 파일의 날짜를 확인할 때마다 속도가 느립니다. 너무 오래된 파일을 찾을 때 예를 들어 list() 명령을 중단 할 수 있습니까? 또는 공정을 고정시키는 더 똑똑한 방법이 있습니까?

답변

0

예, 장시간 재생 명령을 중단하는 방법이 있습니다. QFtp :: list()를 호출하면 Ftp 서버에서 실행 명령을 시작하고, 명령이 엔트리를 찾으면 QFtp는 QFtp::listInfo(const QUrlInfo &) 신호를 내 보냅니다. 해당 신호를 처리하고 QUrlInfo::lastModified() 반환 된 시간이 너무 오래되었는지 여부를 확인할 수 있습니다. 예인 경우 QFtp::abort() 함수를 호출하여 서버에서 목록 명령의 실행을 중단 할 수 있습니다.

void MyFtp::onNewEntry(const QUrlInfo &url) 
{ 
    // If url.lastModified() is less than some time 
    // ftp->abort();  
} 
:

하면 FTP 신호 listInfo 신호 처리 슬롯

connect(ftp, SIGNAL(listInfo(const QUrlInfo &)), 
     this, SLOT(onNewEntry(const QUrlInfo &))); 

실행을 처리하기 위해 연결을 설정 다음 샘플 코드는