qftp 예제

qftp 예제
0 August 2, 2019

FTP 예제에서는 FTP 서버에 사용 가능한 파일을 나열하고 다운로드하는 데 사용할 수 있는 간단한 FTP 클라이언트를 보여 줍니다. 예제에 필요한 기능은 파일 전송 프로토콜에 대한 간편한 고급 인터페이스를 제공하는 QFtp 클래스에서 구현됩니다. FTP 작업은 QFtp::명령을 통해 요청됩니다. 작업은 비동기적입니다. QFtp는 명령이 시작되고 완료되면 신호를 통해 알려줍니다. main() 함수가 프로그램을 완료합니다. 사용자가 명령줄에 URL을 지정하는 경우 이를 사용합니다. 그렇지 않으면, 우리는 ftp://ftp.example.com/ 다시 가을. 임의의 FTP 명령은 rawCommand()를 사용하여 실행할 수 있습니다.

예를 들어 SITE CHMOD 명령을 실행하는 방법은 다음과 같습니다. 이 예제는 응용 프로그램의 MainWindow 클래스가 FTP 사이트에서 가격표를 검색해야 한다고 가정합니다. 이제 보다 고급 예제를 살펴보겠습니다. 스파이더 명령줄 프로그램은 FTP 디렉터리에있는 모든 파일을 다운로드하여 모든 디렉토리의 하위 디렉토리에서 재귀적으로 다운로드합니다. 네트워크 논리는 Spider 클래스에 있습니다: 예를 들어 사용 가능한 것이 있는 즉시 사용자에게 데이터를 표시하려면 readyRead() 신호에 연결하고 즉시 데이터를 읽습니다. 반면에 전체 데이터만 작업하려는 경우 commandFinished() 신호에 연결하고 get() 명령이 완료되면 데이터를 읽을 수 있습니다. QFtp는 connectToHost(), 로그인(), close(), 목록(), cd(), get(), put(), remove(), mkdir(), rmdir(), 이름 바꾸기() 등의 작업을 제공합니다. 이러한 모든 함수는 FTP 명령을 예약하고 명령을 식별하는 ID 번호를 반환합니다. 임의의 FTP 명령은 rawCommand()를 사용하여 실행할 수 있습니다. 예를 들어 사이트 CHMOD 명령을 실행하는 방법은 다음과 같습니다: 경고: 일부 FTP 서버(예: BSD FTP 데몬(버전 0.3)는 중단이 발생한 경우에도 양수 응답을 잘못 반환합니다. 이러한 서버의 경우 명령이 성공적으로 완료되지 않았더라도 명령완성() 신호에 오류 플래그가 FALSE로 설정되어 있습니다.

GUI를 설정하고 FTP 기능을 처리하는 하나의 클래스인 FtpWindow가 있습니다. 이제 FTP와 관련된 코드에 중점을 두고 정의 및 구현을 진행할 것입니다. GUI를 관리하기 위한 코드는 다른 예제에서 설명합니다. 다른 예제에서 설명하는 GUI 설정코드만 포함되어 있으므로 FtpWindow 생성자는 건너뜁니다. 위의 예제에 대해 로그인에 실패하면 신호는 다음과 같습니다. 이 경우 일 필요는 없습니다. 메모리에 데이터를 원한다면 QByteArray를 래핑하는 QIODevice 하위 클래스인 QBuffer를 사용할 수 있습니다. 예를 들어 QNetworkProtocol 인터페이스와 함께 QFtp를 사용하려는 경우 직접 사용하지 않고 QUrlOperator를 통해 사용하십시오. bool) 명령이 완료되면 신호를 보시입니다. int 매개 변수는 명령을 식별하는 ID 번호입니다.

개별 명령의 운명에 관심이 있다면 명령을 예약할 때 ID 번호를 저장할 수 있습니다. ID 번호를 추적하면 사용자에게 자세한 피드백을 제공할 수 있습니다. 예를 들어 get()를 사용하여 단일 파일을 검색하는 방법을 보여 주는 예제로 시작합니다. 명령줄에 지정된 원격 파일을 다운로드하는 ftpget이라는 콘솔 응용 프로그램이 있습니다. main() 함수로 시작해 보겠습니다: 예제의 사용자는 Ftp Server 라인 편집에서 FTP 서버의 주소 또는 호스트 이름을 입력한 다음 연결 버튼을 눌러 연결할 수 있습니다. 그런 다음 서버의 최상위 디렉터리 목록이 파일 목록 트리 보기에 표시됩니다. 뷰에서 선택한 항목이 파일인 경우 사용자는 다운로드 단추를 눌러 다운로드할 수 있습니다. 디렉토리를 나타내는 항목을 마우스로 두 번 클릭하여 뷰에서 해당 디렉터리 내용을 표시할 수 있습니다.

Posted by medmedia