当前位置:首页 > 技术文章 > 正文内容

FTP客户端库ftplibpp在linux系统上的使用

douba32个月前 (07-17)技术文章15

一、简述

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

二、获取

首先在github上(链接:
https://github.com/mkulke/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的方法更新了。

代码我自己fork了下,并修改完成了,可直接从我的代码分支下载,不用再修改上述代码了,地址为:
https://github.com/bboysingle/ftplibpp

另外,linux需要安装openssl库,如下:

sudo apt install libssl-dev

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

相关文章

linux 查看当前应用内存状况,以及内存参数含义

1、查看进程号ps -ef | grep tomcat2、查看当前内存分配,200ms打印一次jstat -gc 进程号 200 1jstat -gc 34480 200 1 S0C S1C...

第五章 Linux常用服务介绍-5.2 FTP服务

1)ftp服务器安装和配置FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文本传输协议”,通常我们就叫它FTP服务。用于Internet上的控制文件的双...

Ftp、 Samba、NFS服务器的区别(ftp smb nfs哪个快)

Ftp、Samba、NFS服务器的对比情况根据使用的方式来看可以分为3种类别的文件服务器:ftp服务器(ftp/tftp)、 Samba服务器、NFS服务器。1:ftp的客户可以是任意平台2:samb...

星际魔盒系列之局域网文件共享篇samba、nfs、tftp

本未打算写该篇,文件共享是个很简单的功能,也有很多web应用也集成了该功能,但是还有一些小伙伴不了解,工具嘛,要灵活掌握为已所用,所以又拎出来单独再讲一下.文件共享的方法有很多,如ftp、samba、...

10个Linux文件内容查看命令的实用示例

Linux文件内容查看命令30个实用示例详细介绍了10个Linux文件内容查看命令的30个实用示例,涵盖了从基本文本查看、分页浏览到二进制文件分析的各个方面。掌握这些命令帮助您:高效查看各种文本文件内...

命令干货:4个 Linux文件权限设置相关命令讲解

linux chmod命令chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定...