2013-09-27 8 views
1

나는 여기에 아주 쉽게 뭔가 빠져있는 것처럼 느껴집니다. 그러나 나는 무엇을 알아 내지 못했습니다. FTP 서버의 파일에 액세스해야하는 C++ 기능 (Qt 4.7 사용)이 있습니다. 이렇게하려면 내가 설정 한 다음 한 :QFTP가 작동하지 않습니다

QString source = "ftp://username:[email protected]/directoryname/"; 
QFtp *ftp = new QFtp(this); 
ftp->connectToHost(source); 

connect(ftp, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo))); 
connect(ftp, SIGNAL(done(bool)), this, SLOT(finishThisProcess())); 

ftp->list(); 

내가 그것을 올바르게 와서 나에게 디렉토리 내의 모든 파일을 표시하는 브라우저에 직접 소스를 입력 할 때. 나 또한 다른 QFtp 인스턴스 (다른 변수 이름)가 프로그램의 다른 곳에 동일한 방법으로 설정되어 있습니다. 그 작품. 그러나이 경우 단순히 source의 디렉토리를 비어있는 것으로 해석하고 즉시 finishThisProcess으로 점프합니다. 내가 빠진 것이 있습니까? 감사!

편집 :이 FTP 클라이언트의 다른 인스턴스 :이 하나 하나의 디렉토리 레벨 멀리까지 액세스하려고 A)을 제외한 다른과 동일합니다

ftp2 = new QFtp(this); 
QString user = "username"; 
QString pass = "password"; 

connect(ftp2, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo))); 
connect(ftp2, SIGNAL(done(bool)), this, SLOT(finishThisProcess())); 

ftp2->connectToHost("ftp.myftpserver.com"); 
ftp2->login(user, pass); 
ftp2->list(); 

, 그리고 b)는 I 선언 사용자 이름과 암호를 별도로 입력 한 다음 수동으로 로그인하십시오. 나는 이런 식으로 문제를 일으키는 것을 시도했지만 아무 소용이 없었다.

답변

1

1) 관련 문장 앞에 신호와 슬롯을 연결해야합니다.

2) 또한 사용자 이름과 암호로 로그인 방법을 사용해야합니다.

그래서, 당신의 코드는 다음과 같아야합니다

QString source = "ftp://ftp.myftpserver.com/directoryname/"; 
QFtp *ftp = new QFtp(this); 

connect(ftp, SIGNAL(listInfo(QUrlInfo)), this, SLOT(processInfoFromFile(QUrlInfo))); 
connect(ftp, SIGNAL(done(bool)), this, SLOT(finishThisProcess())); 

ftp->connectToHost(source); 
ftp->login(username, password); 
ftp->list();