#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
);
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
;