ftplibpp是一个跨平台的可以提供ftp客户端功能的C++库。它包含可以实现ftp客户端功能的类,支持所有基本的ftp功能以及一些高级功能:如恢复、fxp、ssl/tls加密、支持大文件或符合当今标准的日志记录等。本文讲述其在linux系统上的编译和使用。
首先在github上(链接:https://github.com/mkulke/ftplibpp)下载ftplibpp源码。解压后得到如下文件:
ftplibpp源码文件
main.cpp:
#include "ftplib.h"
int main(void)
{
ftplib *ftp = new ftplib();
ftp->Connect("127.0.0.1:21");
ftp->Login("anonymous", "");
ftp->Get("test.txt", "/home/xxx/test.txt", ftplib::image);
ftp->Dir(NULL, "/pub/linux/apache");
ftp->Quit();
return 0;
}
注意,在编译过程中,ftplib.cpp有错误,修改部分如下:
#ifndef NOSSL
if (nControl->tlsdata)
{
(*nData)->ssl = SSL_new(nControl->ctx);
(*nData)->sbio = BIO_new_socket((*nData)->handle, BIO_NOCLOSE);
SSL_set_bio((*nData)->ssl,(*nData)->sbio,(*nData)->sbio);
int ret = SSL_connect((*nData)->ssl);
if (ret != 1) return 0;
(*nData)->tlsdata = 1;
}
#endif
上述代码第七行 添加了int
另外,还有个相关编译告警:
ftplib.cpp:121:61: warning: ‘const SSL_METHOD* TLSv1_2_client_method()’ is deprecated [-Wdeprecated-declarations]
处理方法为:将ftplib.h 此行注释,换成下面这行
//#define _FTPLIB_SSL_CLIENT_METHOD_ TLSv1_2_client_method TLS_client_method
#define _FTPLIB_SSL_CLIENT_METHOD_ TLS_client_method
原因是openssl的方法更新了
另外,linux需要安装openssl库,如下:
sudo apt install libssl-dev
Makefile中添加 -lssl -lcrypto库 编译成功即可运行
留言与评论(共有 0 条评论) “” |