TNB Library
公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CSftpSession クラス

SSH FTPセッション管理クラス [詳解]

#include <TnbSftpFile.h>

+ CSftpSession の継承関係図

公開型

enum  ESyncCriteria { SyncCriteria_Time , SyncCriteria_Size , SyncCriteria_Both , SyncCriteria_Non }
 同期基準 [詳解]
 
enum  ESyncMode { SyncMode_Local , SyncMode_Remote , SyncMode_Both }
 同期モード [詳解]
 

公開メンバ関数

void Close (void)
 [設定] クローズ. [詳解]
 
bool CreateRemoteDir (LPCTSTR lpszRemoteDir)
 [作成] リモートディレクトリ作成. [詳解]
 
 CSftpSession (LPCTSTR lpszWinScpPath=NULL)
 コンストラクタ. [詳解]
 
bool DeleteRemoteFile (LPCTSTR lpszFileName)
 [削除] 指定リモートファイル削除. [詳解]
 
bool EnumRemoteFiles (CWorkMemT< WIN32_FIND_DATA > &_ls, LPCTSTR lpszRemoteDir=NULL)
 [取得] ファイル一覧. [詳解]
 
bool ExistRemoteFile (LPCTSTR lpszRemoteFile)
 [確認] ファイル有無. [詳解]
 
bool ExistRemoteFile (WIN32_FIND_DATA &_fd, LPCTSTR lpszRemoteFile)
 [確認] ファイル有無. [詳解]
 
bool GetCurrentRemoteDir (CStr &_currentRemoteDir)
 [取得] カレントリモートディレクトリ取得. [詳解]
 
const CStrVectorGetLastString (void) const
 [取得] 取得文字列取得. [詳解]
 
bool GetRemoteFile (LPCTSTR lpszNewLocalFile, LPCTSTR lpszRemoteFile, DWORD to=10000)
 [取得] リモートファイル取得. [詳解]
 
const CStrVectorGetSynchronizedFiles (void) const
 [取得] 同期結果ファイル名取得. [詳解]
 
bool IsValid (void) const
 [確認] ハンドル有効確認 [詳解]
 
bool Open (LPCTSTR lpszServerName, LPCTSTR lpszUserName, LPCTSTR lpszPassword, DWORD to=10000)
 [設定] オープン. [詳解]
 
bool PutLocalFile (LPCTSTR lpszNewRemoteFile, LPCTSTR lpszLocalFile, DWORD to=10000)
 [送信] ローカルファイル送信. [詳解]
 
bool RemoveRemoteDir (LPCTSTR lpszRemoteDir)
 [削除] リモートディレクトリ削除. [詳解]
 
bool RenameRemoteFile (LPCTSTR lpszOldName, LPCTSTR lpszNewName)
 [変更] 名前変更. [詳解]
 
bool SetCurrentRemoteDir (LPCTSTR lpszRemoveDir)
 [設定] カレントリモートディレクトリ設定. [詳解]
 
void SetLastString (const CStrVector &vs)
 [設定] 取得文字列設定. [詳解]
 
bool Synchronize (LPCTSTR lpszRemoteDir, LPCTSTR lpszLocalDir, ESyncMode mode, ESyncCriteria criteria=SyncCriteria_Both, DWORD to=10000, LPCTSTR lpszOption=NULL)
 [同期] ローカルとリモートの同期. [詳解]
 
 ~CSftpSession (void)
 デストラクタ [詳解]
 

静的公開メンバ関数

static void TerminateWinscp (void)
 [設定] 強制終了 WinSCP. [詳解]
 

限定公開メンバ関数

bool AdjustCurrentLocalDir (void)
 [実行] カレントローカルディレクトリ調整. [詳解]
 
bool SftpCommand (LPCTSTR lpszCommandLine, DWORD to=1000)
 [実行] SFTP コマンドライン実行. [詳解]
 

詳解

SSH FTPセッション管理クラス

サーバ接続とファイルの転送を管理します。また、デリート、リネームをサポートします。
覚え書き
WinSCP がインストールされている PC でのみ動作します。言語は英語か日本語のみ対応しています。 WinSCP はデフォルトの場所にインストールしているか、パスが通っている必要があります。
注意
WinSCP 4.36 / 4.37 専用です。
参照
CFtpSession
必要ファイル
TnbSftpFile.h
日付
12/02/07 新規作成
12/02/07 OpenSSH → WinSCP に変更
12/05/21 WinSCP 4.37 にも対応。

TnbSftpFile.h46 行目に定義があります。

列挙型メンバ詳解

◆ ESyncCriteria

同期基準

列挙値
SyncCriteria_Time 

時間

SyncCriteria_Size 

ファイルサイズ

SyncCriteria_Both 

両方

SyncCriteria_Non 

なし

TnbSftpFile.h295 行目に定義があります。

◆ ESyncMode

enum ESyncMode

同期モード

列挙値
SyncMode_Local 

リモートからローカルへの同期

SyncMode_Remote 

ローカルからリモートへの同期

SyncMode_Both 

両方

TnbSftpFile.h287 行目に定義があります。

構築子と解体子

◆ CSftpSession()

CSftpSession ( LPCTSTR  lpszWinScpPath = NULL)

コンストラクタ.

引数
lpszWinScpPathWinSCP のパス。省略すると ≪Program Files≫¥WinSCP になります。

TnbSftpFile.h54 行目に定義があります。

◆ ~CSftpSession()

~CSftpSession ( void  )

デストラクタ

TnbSftpFile.h74 行目に定義があります。

関数詳解

◆ AdjustCurrentLocalDir()

bool AdjustCurrentLocalDir ( void  )
protected

[実行] カレントローカルディレクトリ調整.

WinSCP と本プロセスのカレントディレクトリを同期します。

戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h642 行目に定義があります。

◆ Close()

void Close ( void  )

[設定] クローズ.

覚え書き
オープンしていない時は何もしません。

TnbSftpFile.h161 行目に定義があります。

◆ CreateRemoteDir()

bool CreateRemoteDir ( LPCTSTR  lpszRemoteDir)

[作成] リモートディレクトリ作成.

引数
lpszRemoteDir作成するリモートディレクトリ名。
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h190 行目に定義があります。

◆ DeleteRemoteFile()

bool DeleteRemoteFile ( LPCTSTR  lpszFileName)

[削除] 指定リモートファイル削除.

引数
lpszFileName削除するリモートファイル名。
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h384 行目に定義があります。

◆ EnumRemoteFiles()

bool EnumRemoteFiles ( CWorkMemT< WIN32_FIND_DATA > &  _ls,
LPCTSTR  lpszRemoteDir = NULL 
)

[取得] ファイル一覧.

引数
[out]_lsファイル一覧結果格納。
[in]lpszRemoteDirリモートディレクトリ。
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h413 行目に定義があります。

◆ ExistRemoteFile() [1/2]

bool ExistRemoteFile ( LPCTSTR  lpszRemoteFile)

[確認] ファイル有無.

引数
lpszRemoteFileリモートファイル/ディレクトリ。ワイルドカードは使用禁止。
戻り値
trueあり。
false無し or 失敗。理由は GetLastString() で得られます。

TnbSftpFile.h548 行目に定義があります。

◆ ExistRemoteFile() [2/2]

bool ExistRemoteFile ( WIN32_FIND_DATA &  _fd,
LPCTSTR  lpszRemoteFile 
)

[確認] ファイル有無.

引数
[out]_fdファイル情報格納。
[in]lpszRemoteFileリモートファイル/ディレクトリ。ワイルドカードは使用禁止。
戻り値
trueあり。
false無し or 失敗。理由は GetLastString() で得られます。

TnbSftpFile.h523 行目に定義があります。

◆ GetCurrentRemoteDir()

bool GetCurrentRemoteDir ( CStr _currentRemoteDir)

[取得] カレントリモートディレクトリ取得.

FTPセッション中でのカレントディレクトリを取得する。

引数
[out]_currentRemoteDirカレントディレクトリ。
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h217 行目に定義があります。

◆ GetLastString()

const CStrVector & GetLastString ( void  ) const

[取得] 取得文字列取得.

各関数の実行時、得られた文字列を返します。

戻り値
文字列

TnbSftpFile.h559 行目に定義があります。

◆ GetRemoteFile()

bool GetRemoteFile ( LPCTSTR  lpszNewLocalFile,
LPCTSTR  lpszRemoteFile,
DWORD  to = 10000 
)

[取得] リモートファイル取得.

引数
lpszNewLocalFile取得先のローカルファイル名。
lpszRemoteFile取得元のリモートファイル名。
toタイムアウト時間(ms)。省略すると 10秒
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h256 行目に定義があります。

◆ GetSynchronizedFiles()

const CStrVector & GetSynchronizedFiles ( void  ) const

[取得] 同期結果ファイル名取得.

Synchronize() の結果、同期されたファイル名、ディレクトリ名が格納されます。

覚え書き
パス名が長い場合、省略されることがあります。
戻り値
ファイル名。

TnbSftpFile.h373 行目に定義があります。

◆ IsValid()

bool IsValid ( void  ) const

[確認] ハンドル有効確認

戻り値
ture有効。
false無効(開いていないか、失敗したか)。

TnbSftpFile.h179 行目に定義があります。

◆ Open()

bool Open ( LPCTSTR  lpszServerName,
LPCTSTR  lpszUserName,
LPCTSTR  lpszPassword,
DWORD  to = 10000 
)

[設定] オープン.

本クラスのメソッドを使用するには、まずオープンする必要があります。

引数
lpszServerName接続先のホスト名またはドット表記のIPアドレス。
lpszUserName接続の際に使用されるユーザ名。
lpszPassword接続の際に使用されるパスワード。
toタイムアウト時間(ms)。省略すると 10秒
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h89 行目に定義があります。

◆ PutLocalFile()

bool PutLocalFile ( LPCTSTR  lpszNewRemoteFile,
LPCTSTR  lpszLocalFile,
DWORD  to = 10000 
)

[送信] ローカルファイル送信.

引数
lpszNewRemoteFile転送先のリモートファイル名。
lpszLocalFile転送元のローカルファイル名。
toタイムアウト時間(ms)。省略すると 10秒
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h275 行目に定義があります。

◆ RemoveRemoteDir()

bool RemoveRemoteDir ( LPCTSTR  lpszRemoteDir)

[削除] リモートディレクトリ削除.

引数
lpszRemoteDir削除するリモートディレクトリ。
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h203 行目に定義があります。

◆ RenameRemoteFile()

bool RenameRemoteFile ( LPCTSTR  lpszOldName,
LPCTSTR  lpszNewName 
)

[変更] 名前変更.

リモートファイル名、リモートディレクトリ名の変更が出来ます。

引数
lpszOldName元のリモートファイル名。
lpszNewName変更後のリモートファイル名。
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h399 行目に定義があります。

◆ SetCurrentRemoteDir()

bool SetCurrentRemoteDir ( LPCTSTR  lpszRemoveDir)

[設定] カレントリモートディレクトリ設定.

引数
lpszRemoveDir変更先のディレクトリ名。
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h241 行目に定義があります。

◆ SetLastString()

void SetLastString ( const CStrVector vs)

[設定] 取得文字列設定.

GetLastString() で得られる文字列を設定します。

引数
vs文字列

TnbSftpFile.h569 行目に定義があります。

◆ SftpCommand()

bool SftpCommand ( LPCTSTR  lpszCommandLine,
DWORD  to = 1000 
)
protected

[実行] SFTP コマンドライン実行.

引数
lpszCommandLineコマンドライン
toタイムアウト
戻り値
true成功。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h610 行目に定義があります。

◆ Synchronize()

bool Synchronize ( LPCTSTR  lpszRemoteDir,
LPCTSTR  lpszLocalDir,
ESyncMode  mode,
ESyncCriteria  criteria = SyncCriteria_Both,
DWORD  to = 10000,
LPCTSTR  lpszOption = NULL 
)

[同期] ローカルとリモートの同期.

引数
lpszRemoteDirリモートディレクトリ名。
lpszLocalDirローカルディレクトリ名。
mode同期モード。
criteria同期基準。
toタイムアウト時間(ms)。省略すると 10秒
lpszOptionオプション。たとえば、”-delete”など。省略可能。
戻り値
true成功。成功したファイル名、数は、 GetSynchronizedFiles() で得られます。
false失敗。理由は GetLastString() で得られます。

TnbSftpFile.h314 行目に定義があります。

◆ TerminateWinscp()

static void TerminateWinscp ( void  )
static

[設定] 強制終了 WinSCP.

プログラムが異常終了した際、 WinScp が残ってしまうケースがあります。 これは winscp を強制終了するメソッドです。

TnbSftpFile.h579 行目に定義があります。