Мне нужно очень простое консольное приложение для FTP на сервер и получения файла, я пытаюсь использовать QNetworkAccessManager, и кажется, что он не работает и ничего не получает.
Вот мой код,
ftp.h
#ifndef FTP_H
#define FTP_H
#include <string>
#include <vector>
#include <qstring.h>
#include <qfile.h>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkReply>
#include "qdebug.h"
#include <QCoreApplication>
#include <QDebug>
#include <string>
#include <iostream>
#include <sstream>
#include <QTextStream>
#include <QObject>
class ftp
{
// Q_OBJECT
public:
ftp();
private:
QNetworkAccessManager *manager;
QNetworkReply *reply;
private slots:
void slotError(QNetworkReply::NetworkError code);
void replyFinished(QNetworkReply *reply);
};
#endif // FTP_H
ftp.cpp
#include "ftp.h"
#include "QDebug"
#include <qstring.h>
#include <qfile.h>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkReply>
#include "qdebug.h"
#include <QCoreApplication>
#include <QDebug>
#include <string>
#include <iostream>
#include <sstream>
#include <QTextStream>
#include <QObject>
using namespace std;
ftp::ftp()
{
qDebug() << "ZSS Server Program Running Now ...";
QTextStream cin(stdin);
QString username;
QString password;
QString ip;
QString port;
cout << "Username : ";
username = cin.readLine();
cout << "Password : ";
password = cin.readLine();
cout << "IP Address : ";
ip = cin.readLine();
cout << "Port Number : ";
port = cin.readLine();
QUrl url;
url.setScheme("ftp");
url.setHost("10.228.7.74");
url.setPath("/try/hello.txt");
url.setPort(21);
url.setUserName("ftpTest");
url.setPassword("ftpTest");
QNetworkRequest request(url);
//request.setUrl(url);
qDebug() << url;
//cout << "Downloading File...";
manager = new QNetworkAccessManager;
reply = manager->get(request);
QByteArray buffer = reply->readAll();
qDebug() << buffer;
// connect(reply , SIGNAL(error(QNetworkReply::NetworkError)), this,SLOT(slotError(QNetworkReply::NetworkError)));
// connect(manager, SIGNAL(finished(QNetworkReply*)),this,SLOT(replyFinished(QNetworkReply*)));
}
void ftp::slotError(QNetworkReply::NetworkError code)
{
qDebug() << reply->errorString();
}
void ftp::replyFinished(QNetworkReply *reply)
{
// QTextCodec *codec = QTextCodec::codecForName("utf8");
// QString all = codectoUniCode(reply->readAll());
// cout >> all;
// reply->deleteLater();
}
После запуска кода внутри папки я могуне вижу ни одного файла там.Поэтому я qDebug () вычеркнул все ответы и буфер, я обнаружил, что буфер и ответ пустые, есть ли какая-то часть, которую я пропустил или что-то не так делал?Могу ли я получить простой пример для этого?
Вот скриншоты вывода консоли,
![Output of code](https://i.stack.imgur.com/HGGcR.png)
Я qDebug () буфер, но буфер не имеет ничего наИтак, я создаю этот локальный ftp-сервер с помощью 3CDaemon, и я указал нужную папку, и мой ftp-сервер работает, я могу использовать командную строку, чтобы открыть ftp и получить файл, просто не могу сделать это с помощью Qt.
Пожалуйста, помогите мне, это беспокоило меня в течение нескольких дней .. Спасибо ..