一、简述

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中有如下代码:

#ifndef _WIN32
#include <unistd.h>
#include <sys/time.h>
#endif

将其修改为:

#ifndef _WIN32
#include <unistd.h>
#include <sys/time.h>
#else
#include <WinSock2.h>
#include <ws2tcpip.h>
#endif

在ftplib.cpp中有如下代码:

#ifndef NOSSLif (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

将其修改为:

#ifndef NOSSLif (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

有如下代码:

#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

将其修改为:

#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,在其中添加如下代码:

#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的使用相关推荐

  1. FTP客户端的基本使用---Linux学习笔记

    FTP客户端命令 Windows和Linux等平台下都自带有命令行形式的FTP客户端软件,在Linux中FTP命令有很多参数及内部命令.熟练掌握这些命令及参数的使用,是FTP进行自动化运维的关键步骤. ...

  2. freecplus框架-ftp客户端

    文章目录 一.源代码说明 二.概述 三.Cftp类 四.准备测试环境 1.创建Linux操作系统用户 2.安装配置ftp服务器 3.配置防火墙 4.准备测试的文件 五.示例程序 1.获取服务器文件列表 ...

  3. Qt4_写FTP客户端

    写FTP客户端 QFtp类在Qt中实现了FTP协议的客户端程序,它提供了非常多的函数来执行多数常见的FTP操作,同时还可以执行任意的FTP指令. QFtp类是异步工作的.若调用一个像get()或者pu ...

  4. Java Ftp客户端

    1.第三方库commons-net-*.jar 打开Download Apache Commons Net下载jar包 2.上传文件 private boolean upload(String abs ...

  5. C#毕业设计——基于C#+asp.net+FTP的FTP客户端设计与实现(毕业论文+程序源码)——FTP客户端

    基于C#+asp.net+FTP的FTP客户端设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+FTP的FTP客户端设计与实现,文章末尾附有本毕业设计的论文和源码下载地 ...

  6. 安卓FTP客户端无法连接FTP服务器FineFTP

    FineFTP的介绍请见上一篇博文<C++FTP服务器库:FineFTP的编译和使用>. 一.问题描述: 如题,在windows电脑中通过FineFTP搭建了一个FTP服务器,在安卓手机/ ...

  7. android telnet服务器端,Android FTP客户端实现、Telnet客户端

    Android FTP客户端实现 android中使用第三方库来操作FTP,这里使用Apache的包,下载地址为:http://commons.apache.org/proper/commons-ne ...

  8. C/C++、Qt4实现FTP客户端(有无界面版)

    简介 操作系统:Ubuntu 12.04 LTS 开发工具:GNU4.6.3,C/C++标准库,Qt4,Qt Creator Documentation 2.4.1 代码下载:码云:传送门,GitHu ...

  9. 基于java的ftp客户端_基于Java的FTP客户端软件的设计

    基于的FTP客户端软件的设计(含选题审批表,任务书,开题报告,中期检查表,毕业论文8600字,答辩记录) 摘 要:FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中 ...

  10. 安卓端简易FTP客户端APP开发

    先上效果图: 本文的FTP客户端基于commons-net-3.3.jar库实现. 实现了ftp服务器登录. 单个文件的下载和上传,以及本地复制和删除文件. 一.登录服务器活动模块编写: 这块呢首先是 ...

最新文章

  1. ​​清华大学举办疫情防控期间首场在线学位论文答辩
  2. 如何应对安全漏洞的修复
  3. 构造函数(constructor)与原型链(prototype)关系
  4. JavaSE(十六)——反射
  5. C# 8 新特性 - 只读struct成员
  6. python wget安装_Macbook系统环境安装wget的2个方法 - 传统包及Homebrew安装
  7. 去哪儿-10-city-ajax
  8. intel编译器_试试吧!用 Go 写一个即时编译器(JIT)
  9. java连接redis集群
  10. PHP网站开发的流程步骤
  11. Linux环境入侵应急与排查
  12. QTTabBar 安装使用记录
  13. 如何下载并安装 LaTex
  14. C# 将Big5繁体转换简体GB2312的代码
  15. c语言工程师专业分析,一个资深c语言工程师说如何学习c语言.pdf
  16. 软件测试ios打包,苹果测试iOS打包成 ipa包
  17. Protel DXP 2004的元件封装/快捷键大全/PCB使用技巧
  18. 自制树莓派PICO RP2040开发板+例程(I2C读取LM75和AHT20 温度数据)
  19. 桌面快捷方式自动创建 病毒
  20. 卡方分布(Chi-Squared Distribution)

热门文章

  1. 开源开发者 David Recordon 被任命白宫技术总监
  2. 服务器销售周总结怎么写,网管周工作总结范文的内容
  3. 【通过】华为OD机试真题59:叠积木
  4. Win10·不重装系统·扩充C盘
  5. MLX90640 红外热成像仪测温模块开发笔记(完整版)
  6. 物理学 第六版 上册、下册 课后答案 东南大学 马文蔚
  7. ECPC-2015部分题解
  8. Java证书读取的两种方式
  9. CSS - (Cascading Style Sheets) 自学教程
  10. 最近非常火的AI绘图(附操作方法)