我是靠谱客的博主 机智时光,这篇文章主要介绍C++FTP客户端库:ftplibpp的使用一、简述二、使用,现在分享给大家,希望可以做个参考。

一、简述

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

二、使用

首先在github上(链接:https://github.com/mkulke/ftplibpp)下载ftplibpp源码。解压后得到如下文件:

在这里插入图片描述
创建vs工程,将ftplib.cpp和ftplib.h添加进工程中
在这里插入图片描述
安装OpenSSL,参考文章《Windows安装使用Openssl》。如果是要编译32位的程序,则选择32位的OpenSSL。
在这里插入图片描述
安装OpenSSL后,在其安装路径下会出现OpenSSL的头文件和库。在vs工程中的项目属性页,“附加包含目录”将OpenSSL的头文件目录添加进去,“链接库目录”和“附加依赖项”将OpenSSL的lib添加进去。

“配置属性” -> “C/C++” -> “预处理器” 中增加NOLFS、_CRT_SECURE_NO_WARNINGS、_WINSOCK_DEPRECATED_NO_WARNINGS。

在这里插入图片描述
在ftplib.h中有如下代码:

复制代码
1
2
3
4
5
#ifndef _WIN32 #include <unistd.h> #include <sys/time.h> #endif

将其修改为:

复制代码
1
2
3
4
5
6
7
8
#ifndef _WIN32 #include <unistd.h> #include <sys/time.h> #else #include <WinSock2.h> #include <ws2tcpip.h> #endif

在ftplib.cpp中有如下代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
#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); ret = SSL_connect((*nData)->ssl); if (ret != 1) return 0; (*nData)->tlsdata = 1; } #endif

将其修改为:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
#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

有如下代码:

复制代码
1
2
3
4
5
6
7
8
9
10
#if defined(_WIN32) #include <windows.h> #include <winsock.h> #else #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #endif

将其修改为:

复制代码
1
2
3
4
5
6
7
8
9
10
11
#if defined(_WIN32) #include <windows.h> #include <winsock.h> #pragma comment(lib,"ws2_32") #else #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #endif

创建main.cpp,在其中添加如下代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h> #include "ftplib.h" int main() { ftplib *ftp = new ftplib(); int ret = ftp->Connect("127.0.0.1:21"); ret = ftp->Login("xiaoming", "123456"); ret = ftp->Get("text.txt", "text.txt", ftplib::image); ftp->Quit(); return 0; }

上述代码表示将ftp服务器ip为127.0.0.1,端口为21,用户名为:xiaoming,密码为:123456的共享目录中的名称为text.txt的文件,下载到本地(vs工程所在路径),本重命名为text.txt。

在这里插入图片描述
下载后发现工程目录多了个text.txt,表示下载成功了
在这里插入图片描述

最后

以上就是机智时光最近收集整理的关于C++FTP客户端库:ftplibpp的使用一、简述二、使用的全部内容,更多相关C++FTP客户端库:ftplibpp内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(109)

评论列表共有 0 条评论

立即
投稿
返回
顶部