libssh C++封裝之七(File)

1 概述

??libssh是一個在客戶端和服務器端實現SSHv2協議的多平臺C庫。使用libssh,您可以遠程執行程序、傳輸文件、使用安全透明的隧道、管理公鑰等等。本文描述的對libssh客戶端功能的C++封裝。
libssh下載地址

3 實現

3.6 File

File類型可以讀寫遠程文件。

3.6.1 File定義

類圖

3.6.1.1 File
class FilePrivate;
class SFtp;
class Session;
class File
{
public:File(SFtp const& sftp);File(Session const& session);~File();typedef std::shared_ptr<File> Ptr;void set_filesize(uint64_t filesize);bool open(const char *filename, int accesstype, mode_t mode);bool close();void set_noblocking(bool enable);ssize_t read(void *buf, size_t count);ssize_t write(const void *buf, size_t count);int seek(uint32_t new_offset);int seek(uint64_t new_offset);uint64_t tell();void rewind();
private:File(File const&);File & operator == (File const&);FilePrivate* d;
};

接口函數:

  • set_filesize 設置文件大小
  • open 打開文件
  • close 關閉文件
  • set_noblocking 設置非阻塞模式
  • read 讀數據
  • write 寫數據
  • seek 這只文件讀寫位置
  • tell 返回文件讀寫位置
  • rewind 重置文件讀寫位置
3.6.1.2 FilePrivate
class FilePrivate
{
public:FilePrivate(): filesize(0){}virtual ~FilePrivate() {}virtual bool open(const char *file, int accesstype, mode_t mode) = 0;virtual bool close() = 0;virtual ssize_t read(void *buf, size_t count) = 0;virtual ssize_t write(const void *buf, size_t count) = 0;virtual void set_noblocking(bool /*enable*/) {}virtual int seek(uint32_t /*new_offset*/) { return -1; }virtual int seek(uint64_t /*new_offset*/) { return -1; }virtual uint64_t tell() { return -1; }virtual void rewind() {}uint64_t filesize;
};

接口定義:

  • open 打開文件
  • close 關閉文件
  • read 讀數據
  • write 寫數據
  • set_noblocking 設置非阻塞模式
  • seek 設置文件讀寫位置
  • tell 返回文件讀寫位置
  • rewind 重置文件讀寫位置
3.6.1.3 SftpFilePrivate

基于SFTP協議實現FilePrivate接口

class SftpFilePrivate : public FilePrivate
{
<

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/10789.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/10789.shtml
英文地址,請注明出處:http://en.pswp.cn/web/10789.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用rsync+lnotify實現遠程數據實時同步備份

目錄 1、定時備份與實時備份區別 2、配置客戶端 2.1、在客戶端安裝inotify-tools軟件。以便提供inotifywait inotifywatch 輔助工具程序 2.2 驗證&#xff1a;監控客戶端/data_backup目錄的變化 2.3 編寫自動同步腳本 2.4 后臺運行腳本 2.5 驗證數據實時同步效果 1、定…

【JS面試題】call - apply - bind

推薦嗶站一個老師的視頻講解&#xff0c;非常詳細易懂&#xff0c;5分鐘學會&#xff01;前端面試題&#xff1a;call、apply、bind的基本概念 這三個都是函數的方法&#xff0c;用來改變函數中的this指向&#xff01; 關于call的使用&#xff1a;&#xff08;3個方法類似&am…

SpringCloud:服務拆分和遠程調用

程序員老茶 &#x1f648;作者簡介&#xff1a;練習時長兩年半的Java up主 &#x1f649;個人主頁&#xff1a;程序員老茶 &#x1f64a; P? ?S : 點贊是免費的&#xff0c;卻可以讓寫博客的作者開心好久好久&#x1f60e; &#x1f4da;系列專欄&#xff1a;Java全棧&#…

使用socat做端口轉發

最近買的云上mongo數據庫但是數據庫不支持外網訪問&#xff0c;準備做iptables轉發但是一直不成功&#xff0c;騰訊云官方給予的解釋是受服務器內啟動的docker影響 做iptables轉發會沖突&#xff0c;所以只能另想辦法&#xff0c;我發現使用socat做轉發也很好用&#xff0c;所以…

JAVA_4

JAVA_4 一、JAVA內存總體架構二、棧的特點如下三、堆的特點如下四、方法區&#xff08;又叫靜態區&#xff0c;也是堆&#xff09;特點如下五、this的本質 一、JAVA內存總體架構 多個線程里面有&#xff1a;程序計數器、虛擬機棧、本地方法棧方法區&#xff1a;運行時常量池堆…

FPGA相關論文閱讀

一、Achieving 100Gbps Intrusion Prevention on a Single Server 論文名稱中文翻譯&#xff1a;在單臺服務器上實現100Gbps吞吐量的入侵防御檢測。 文章中的Mixed-1和Norm-1 二、Distributed Password Hash Computation on Commodity Heterogeneous Programmable Platforms…

【回溯 字典樹(前綴樹)】212. 單詞搜索 II

本文涉及知識點 回溯 字典樹&#xff08;前綴樹&#xff09; LeetCode212. 單詞搜索 II 給定一個 m x n 二維字符網格 board 和一個單詞&#xff08;字符串&#xff09;列表 words&#xff0c; 返回所有二維網格上的單詞 。 單詞必須按照字母順序&#xff0c;通過 相鄰的單元…

第3周 后端微服務基礎架構與前端項目聯調配備

第3周 后端微服務基礎架構與前端項目聯調配備 1. 微服務項目層次設計與Maven聚合1.1 項目層次設計1.2 父項目pom1.2.1 打包方式 1.3 創建通用 ************************************************************************************** 1. 微服務項目層次設計與Maven聚合 1.1…

電商平臺遭遇DDOS、CC攻擊有什么防護方案

電商平臺遭遇DDOS、CC攻擊有什么防護方案&#xff1f;在數字化浪潮的推動下&#xff0c;電商平臺已成為現代商業的重要組成部分&#xff0c;為消費者提供便捷、多樣的購物體驗。然而&#xff0c;隨著業務的發展&#xff0c;電商平臺也面臨著日益嚴峻的網絡安全挑戰&#xff0c;…

Tower for Mac:Git管理的新境界

Tower for Mac&#xff0c;讓您的Git管理進入新境界&#xff01;這款專為Mac用戶打造的Git客戶端&#xff0c;憑借其出色的性能和豐富的功能&#xff0c;成為眾多開發者的首選工具。 Tower不僅支持常規的Git操作&#xff0c;如提交、推送和拉取&#xff0c;還提供了許多高級功能…

四、VGA項目:聯合精簡幀+雙fifo+sobel算法 實現VGA顯示

前言&#xff1a;該項目實際上是在很多基礎的小練習上合成起來的&#xff0c;例如涉及到uart&#xff08;rs232&#xff09;的數據傳輸、雙fifo流水線操作、VGA圖像顯示&#xff0c;本次內容在此基礎上又增添了sobel算法&#xff0c;能實現圖像的邊沿監測并VGA顯示。 文章目錄…

簡單的DbUtils工具類【精細】

目錄 單條通用增刪改方法 1.創建maven項目&#xff0c;并加載依賴 2.創建數據庫連接工具類(Dbutils類) 3.創建一個執行器(SqlExecutor類) 4.通用(增&#xff0c;刪&#xff0c;改)方法 1.創建方法 2.創建userInfo實體類 3.創建測試類&#xff0c;測試增&#xff0c;刪&#xf…

探索數據結構:樹與二叉樹

?? 歡迎大家來到貝蒂大講堂?? &#x1f388;&#x1f388;養成好習慣&#xff0c;先贊后看哦~&#x1f388;&#x1f388; 所屬專欄&#xff1a;數據結構與算法 貝蒂的主頁&#xff1a;Betty’s blog 1. 樹 1.1. 樹的定義 樹是一種非線性的數據結構&#xff0c;它是由n&a…

ORA-609頻繁出現在alert.log,如何解決?

ORA-609就alertlog中比較常見的一個報錯&#xff0c;雖然并沒有太大的影響&#xff0c;但是頻繁的出現在alert log也是很讓人厭煩的事情&#xff0c;本文介紹如何排查解決ORA-609問題。 1.ORA-609官方定義 could not attach to incoming connection Cause Oracle process cou…

【SRC實戰】前端脫敏信息泄露

挖個洞先 https://mp.weixin.qq.com/s/xnCQQCAneT21vYH8Q3OCpw “ 以下漏洞均為實驗靶場&#xff0c;如有雷同&#xff0c;純屬巧合 ” 01 — 漏洞證明 一、前端脫敏&#xff0c;請求包泄露明文 “ 前端脫敏處理&#xff0c;請求包是否存在泄露&#xff1f; ” 1、獲取驗…

|Python新手小白中級教程|第二十八章:面向對象編程(類定義語法私有屬性類的繼承與多態)(4)

文章目錄 前言一、類定義語法二、私有方法和私有屬性1.私有屬性2.私有方法 三、類“繼承”1.初識繼承2.使用super函數調用父類中構造的東西 四、類“多態”1.多態基礎2.子類不同形態3.使用isinstance函數與多態結合判斷類型 總結 前言 大家好&#xff0c;我是BoBo仔吖&#xf…

6818Linux內核開發移植

Linux內核開發移植 Linux內核版本變遷及其獲得 Linux是最受歡迎的自由電腦操作系統內核&#xff0c; 是一個用C語言寫成&#xff0c; 并且符合POSIX標準的類Unix操作系統 Linux是由芬蘭黑客Linus Torvalds開發的&#xff0c; 目的是嘗試在英特爾x86架構上提供自由免費的類Un…

Task Office for Mac v9.0激活版:任務管理新境界

還在為繁瑣的任務管理而煩惱嗎&#xff1f;Task Office for Mac為您帶來全新的任務管理體驗。簡潔明了的界面設計&#xff0c;讓您輕松上手&#xff1b;強大的任務管理和項目管理功能&#xff0c;讓您輕松掌握任務進度&#xff1b;多用戶協作功能&#xff0c;讓團隊協作更加高效…

ubuntu24.04安裝ros

ubuntu24.04安裝ros 踩坑 踩坑 目前安裝人數比較少&#xff0c;沒有較為詳細的博客&#xff0c;參考官網的鏈接 http://docs.ros.org/en/rolling/Installation/Ubuntu-Install-Debians.html 同時在如下的一步中會找不到網址報錯&#xff0c;此時可以參考https://blog.51cto.c…

Excel辦公技巧之下拉菜單

在日常辦工中&#xff0c;經常需在單元格中輸入特定的值&#xff0c;此時我們可以使用下拉菜單解決&#xff0c;輸入錯誤和錯誤值&#xff0c;可以一勞永逸的解決固定數據輸入問題。 使用Excel下拉菜單時&#xff0c;它在數據輸入和驗證方面發揮著重要作用通過點擊單元格的下拉…