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