libssh C++封装之四(SCP)

本文详细介绍了如何使用libssh库在C++中实现SCP协议,用于文件的上传和下载。内容涵盖Scp类型的操作,如open、close、pull_req、accept_req、deny_req、read、mkdir等,以及相关示例。
摘要由CSDN通过智能技术生成

1 概述

  libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。
libssh下载地址

3 实现

3.3 Scp

Scp类型通过SCP协议管理远程文件,可以上传和下载文件。

3.3.1 Scp定义

class ScpPrivate;
class Session;
class DirPtr;

class Scp
{
   
public:
    Scp(Session const& session);
    ~Scp();

    enum Req {
    MewDir = 1, NewFile, Eof, EndDir, Warning };
    typedef std::shared_ptr<Scp> Ptr;

    bool open(const char* filepath, bool isRead);
    bool close();

    //for read
    int pull_req();
    size_t get_size();
    const char* get_filename();
    int get_permissions();
    const char* get_warning();
    const char* error();
    bool accept_req();
    bool deny_req(const char* reason);

    ssize_t read(void *buf, size_t count);

    //for write
    bool mkdir(const char* dirname);
    bool leave_dir();
    bool mkfile(const char* filename, size_t count);
    bool write(const void *buf, size_t count);

    DirPtr home() const;
    DirPtr root() const;
    DirPtr dir(const char* path) const;
private:
    friend class Dir;
    Scp(Scp const&);
    Scp & operator == (Scp const&);

    ScpPrivate* d;
};

接口函数:

  • open 以只读或只写模式打开文件或目录
  • close 关闭文件
  • pull_req 拉取请求
  • get_size 获取文件大小
  • get_filename 获取目录或文件名
  • get_permissions 获取访问权限
  • get_warning 获取警告信息
  • accept_req 接收请求
  • deny_req 拒绝请求
  • read 读数据
  • mkdir 创建目录
  • leave_dir 离开目录
  • mkfile 创建文件
  • write 写数据
  • home 返回home目录对象
  • root 返回root目录对象
  • dir 返回指定目录对象

3.3.2 Scp实现

3.3.2.1 ScpPrivate
class ScpPrivate
{
   
public:
    ScpPrivate(ssh_session s)
        : session(s)
        , scp(0)
        , isOpened(false)
    {
   }

    ssh_session session;
    ssh_scp scp;
    bool isOpened;
};
3.3.2.2 Scp/~Scp
Scp::Scp(Session const& session)
    : d(new ScpPrivate(session.d->session))
{
   
}

Scp::~Scp()
{
   
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysnow010

你的鼓励就是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值