QSsh之SshConnection類

SshConnection

#include」sshconnection.h」       所在的頭文件html

類:SshConnectionParameters:

鏈接須要的信息類。包含須要鏈接的主機和驗證信息。git

enum AuthenticationType 驗證方式github

{AuthenticationByPassword, 密碼驗證shell

AuthenticationByKey}; key文件驗證api

公有函數:服務器

SshConnectionParameters() 構造函數。框架

屬性:ssh

QString host; 主機,主機名或者主機地址異步

QString userName; 用戶名socket

QString password; 密碼

QString privateKeyFile; 密匙文件。(文件地址)

int timeout; // In seconds. 鏈接等待時間,超過期間就自動返回鏈接超時,單位秒(s)

AuthenticationType authenticationType; 驗證方式

quint16 port;

SshConnectionOptions options; 鏈接設置

SshConnectionOption枚舉

enum SshConnectionOption {

SshIgnoreDefaultProxy = 0×1,  忽略默認代理?

SshEnableStrictConformanceChecks = 0×2

};

 

Q_DECLARE_FLAGS(SshConnectionOptions, SshConnectionOption)

 

 

 

類:SshConnectionInfo

鏈接信息類。

公有函數:

SshConnectionInfo() : localPort(0), peerPort(0) {}   構造函數

SshConnectionInfo(const QHostAddress &la, quint16 lp, const QHostAddress &pa, quint16 pp)

: localAddress(la), localPort(lp), peerAddress(pa), peerPort(pp) {} 構造函數

 

QHostAddress localAddress; 本地IP地址

quint16 localPort; 本地端口

QHostAddress peerAddress; 目標地址

quint16 peerPort; 目標地址

 

 

類:SshConnection

鏈接到服務器的類。下面打開和執行命令,ssh socket通道,sftp面板都須要此類。

 

enum State{Unconnected,Connecting,Connected}; 鏈接狀態枚舉{未鏈接,鏈接中,已鏈接}

公共函數:

explicit SshConnection(const SshConnectionParameters &serverInfo, QObject *parent = 0); 構造函數,參數是鏈接所需的信息類,和父對象。

 

void connectToHost(); 鏈接到服務器(異步)

void disconnectFromHost(); 從服務器斷開鏈接

State state() const; 返回當前鏈接的狀態

SshError errorState() const; 返回當前鏈接的錯誤

QString errorString() const; 返回當前鏈接錯誤的文本信息

SshConnectionParameters connectionParameters() const;  返回所用的鏈接信息類

SshConnectionInfo connectionInfo() const;  返回當前的鏈接信息

~SshConnection(); 析構函數

 

QSharedPointer<SshRemoteProcess> createRemoteProcess(const QByteArray &command); 建立一個命令執行過程呢,參數是須要執行的命令。命令執行完即退出,返回參數爲SshRemoteProcess(遠程進程類)的智能指針。

QSharedPointer<SshRemoteProcess> createRemoteShell(); 建立一個shell,返回的也是shRemoteProcess(遠程進程類)的智能指針。這個能夠保持狀態,屢次執行命令。Ssh跳板也是支持的,合理設計實現自動交互。

QSharedPointer<SftpChannel> createSftpChannel();  建立一個sftp面板,返回的是SftpChannel(sftp面板類)的智能指針

QSharedPointer<SshDirectTcpIpTunnel> createTunnel(quint16 remotePort); 建立一個ssh隧道,返回的是SshDirectTcpIpTunnel的智能指針。(這個類能夠實現ssh的scoket代理。),參數是本地監聽端口。

 

// -1 if an error occurred, number of channels closed otherwise.

int closeAllChannels(); //關閉全部通道數,正常返回通道數,錯誤返回-1

 

int channelCount() const;  通道數

 

發出的信號;

void connected(); 以鏈接到服務器

void disconnected(); 已從服務器斷開鏈接

void dataAvailable(const QString &message); (有數據可用?)

void error(QSsh::SshError); 鏈接錯誤

 

 

 

Ssherro枚舉:

enum SshError {

SshNoError, 沒有錯誤

SshSocketError,  scoket錯誤

SshTimeoutError,  鏈接超時

SshProtocolError,

SshHostKeyError,  密碼錯誤

SshKeyFileError, key驗證錯誤

SshAuthenticationError,

SshClosedByServerError,

SshInternalError

};

 

 

注:QSSH是提取自Qt-creator裏的一個ssh連接庫,用botan庫實現的加密,用qt框架的實現的ssh連接庫。

這是官方留下的接口,官方的封裝模式大概是(我從源碼看的,Qt庫源碼我未讀過,不清楚):

留出api類邏輯處理和運算單獨存在一個private類裏,api類裏私有對象有一個private類,api裏只是爲了簡潔的接口,隱藏細節的一箇中間。話說,這個接口就夠咱們用的了。

此爲我在使用中獲得的一些參數和用法,非官方文檔,有錯誤的地方請你們指正,還有的拿不許的就在後面加了個?號。

QSsh地址:http://www.oschina.net/p/qssh

https://github.com/dushibaiyu/QSsh

我Blog:http://www.dushibaiyu.com

本文地址:http://www.dushibaiyu.com/2014/01/qssh%E4%B9%8Bsshconnection%E7%B1%BB.html

相關文章
相關標籤/搜索