一、简述

ftplibpp是一个跨平台的可以提供ftp顾客端功能的C++库。它包含可以实现ftp顾客端功能的类node.js安装linux,支持所有基本的ftp功能以及一些中级功能:如恢复、fxp、ssl/tls加密、支持大文件或符合现今标准的日志记录等。本文述说其在linux系统上的编译和使用。

二、获取

首先在github上(链接:

)下载ftplibpp源码。解压后得到如下文件:

ftplibpp linux编译教程_ftplibpp github下载_linux ftp下载文件

ftplibpp源码文件

三、编写源码

main.cpp:

ftplibpp linux编译教程_linux ftp下载文件_ftplibpp github下载

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

linux ftp下载文件_ftplibpp linux编译教程_ftplibpp github下载

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

ftplibpp linux编译教程_linux ftp下载文件_ftplibpp github下载

上述代码第七行添加了int

另外,还有个相关编译告警:

ftplib.cpp:121:61: warning: ‘const SSL_METHOD* TLSv1_2_client_method()’ is deprecated [-Wdeprecated-declarations]

处理方式为:将ftplib.h此行注释永久免费linux服务器,换成下边这行

//#define _FTPLIB_SSL_CLIENT_METHOD_ TLSv1_2_client_method TLS_client_method
#define _FTPLIB_SSL_CLIENT_METHOD_ TLS_client_method

ftplibpp github下载_linux ftp下载文件_ftplibpp linux编译教程

缘由是openssl的方式更新了。

代码我自己fork了下,并更改完成了linux ftp下载文件,可直接从我的代码分支下载,不用再更改上述代码了,地址为:

另外,linux须要安装openssl库linux ftp下载文件,如下:

sudoaptinstalllibssl-dev

Makefile中添加-lssl-lcrypto库编译成功即可运行

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复