// 000.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <vector>
#include <assert.h>
#include <fstream>
#include "Poco/Net/MailMessage.h"
#include "Poco/Net/MailRecipient.h"
#include "Poco/Net/SMTPClientSession.h"
#include "Poco/Net/StringPartSource.h"
#include "Poco/Path.h"
#include "Poco/Exception.h"
#include <iostream>
#include "poco/net/StreamSocket.h"
#include "Poco/Net/SocketAddress.h"
#include "Poco/Net/POP3ClientSession.h"
#include "Poco/Net/NetException.h"
using Poco::Net::MailMessage;
using Poco::Net::MailRecipient;
using Poco::Net::SMTPClientSession;
using Poco::Net::StringPartSource;
using Poco::Path;
using Poco::Exception;
using Poco::Net::StreamSocket;
using Poco::Net::SocketAddress;
using Poco::Net::POP3ClientSession;
using Poco::Net::MessageHeader;
using Poco::Net::MailMessage;
using Poco::Net::POP3Exception;
#include "Poco/Net/StreamSocket.h"
#include "Poco/Net/SocketStream.h"
#include "Poco/Net/SocketAddress.h"
#include "Poco/StreamCopier.h"
#include "Poco/Path.h"
#include "Poco/Exception.h"
#include <iostream>
using Poco::Net::StreamSocket;
using Poco::Net::SocketStream;
using Poco::Net::SocketAddress;
using Poco::StreamCopier;
using Poco::Path;
using Poco::Exception;
#include "Poco/Net/HTTPClientSession.h"
#include "Poco/Net/HTTPRequest.h"
#include "Poco/Net/HTTPResponse.h"
#include "Poco/StreamCopier.h"
#include "Poco/Path.h"
#include "Poco/URI.h"
#include "Poco/Exception.h"
#include <iostream>
#include "Poco/Net/FTPClientSession.h"
using Poco::Net::FTPClientSession;
using Poco::Net::FTPException;
using Poco::Net::HTTPClientSession;
using Poco::Net::HTTPRequest;
using Poco::Net::HTTPResponse;
using Poco::Net::HTTPMessage;
using Poco::StreamCopier;
using Poco::Path;
using Poco::URI;
using Poco::Exception;
#include "Poco/ActiveMethod.h"
#include "Poco/StreamCopier.h"
#include <sstream>
using Poco::ActiveMethod;
using Poco::ActiveResult;
using Poco::StreamCopier;
#include "Poco/FileStream.h"
#include "Poco/File.h"
class ActiveDownloader
{
public:
ActiveDownloader(FTPClientSession& session):
download(this, &ActiveDownloader::downloadImp),
_session(session)
{
}
ActiveMethod<std::string, std::string, ActiveDownloader> download;
protected:
std::string downloadImp(const std::string& path)
{
std::istream& istr = _session.beginDownload(path);
std::ostringstream ostr;
StreamCopier::copyStream(istr, ostr);
_session.endDownload();
return ostr.str();
}
private:
FTPClientSession& _session;
};
int main(int argc, char** argv)
{
FTPClientSession session("ftp.hhhw64.budget-gecko-network.com", 21);
try
{
session.login("aaa", "bbb");
std::string type = session.systemType(); // 获取服务器类型
std::string cwd = session.getWorkingDirectory(); // 获取当前工作目录
// 工作目录ftp://ftp.hhhw64.budget-gecko-network.com/public_html/test/
session.setWorkingDirectory("public_html//test"); // 设置工作目录
cwd = session.getWorkingDirectory();
// session.rename("old.txt", "new.txt"); // 更改文件名
// session.cdup(); // cd..
// cwd = session.getWorkingDirectory();
// session.remove("xxx.txt"); // 删除文件
// session.createDirectory("foo"); // 创建目录
// session.removeDirectory("foo"); // 删除目录
// 下载文本文件,使用ActiveMethod
// session.setPassive(false);
// ActiveDownloader dl(session);
// ActiveResult<std::string> result = dl.download("1.txt");
// result.wait();
// std::string received = result.data();
// cout<<received;
// 下载文本文件,同一线程内,文件大会卡
// std::istream& istr = session.beginDownload("1.txt");
// std::ostringstream dataStr;
// StreamCopier::copyStream(istr, dataStr);
// session.endDownload();
// std::string s(dataStr.str());
// cout<<s;
// 上传二进制文件
// ifstream my_ifstream("123.jpg",ios::binary);
// std::ostream& ostr = session.beginUpload("123.jpg");
// ostr << my_ifstream.rdbuf();
// session.endUpload();
// my_ifstream.close();
// 下载二进制文件
ofstream outf("xxx.jpg", ios::binary);
std::istream& istr = session.beginDownload("123.jpg");
StreamCopier::copyStream(istr, outf);
session.endDownload();
outf.close();
// 获取文件列表
// std::istream& istr = session.beginList();
// std::ostringstream dataStr;
// StreamCopier::copyStream(istr, dataStr);
// session.endList();
// std::string s(dataStr.str());
// cout<<s;
session.close();
}
catch (FTPException& e)
{
cout<<e.displayText();
}
system("pause");
return 0;
}