JP1/FTP APIライブラリは,JP1/FTPのファイル伝送機能をユーザプログラムから利用するときに使用します。
JP1/FTP APIライブラリを使用して,次のことができます。
関数を使用するための前提条件
JP1/FTPが提供する関数を使用するために必要なものを次に示します。
ユーザプログラムで使用できる言語を次に示します。
JP1/FTP APIライブラリが前提とするコンパイラーを次に示します。
表7-1 JP1/FTP APIライブラリが前提とするコンパイラー
OS | コンパイラー | ヘッダファイル | インポートライブラリ |
---|---|---|---|
Windows Server 2003 | Visual C++ 4.0 | apihead.h | FTSFTP40.lib |
Visual C++ 5.0 | apihead.h | FTSFTP50.lib | |
Visual C++ 6.0 | apihead.h | FTSFTP.lib | |
Visual Studio 2005 (SP1) | apihead.h | FTSFTP80.lib | |
Visual Studio 2008 | apihead.h | FTSFTP90.lib | |
Windows Server 2003 (IPF) | Platform SDK February 2003 | apihead.h | FTSFTP.lib |
Visual Studio 2005 (SP1) | apihead.h | FTSFTP80.lib | |
Visual Studio 2008 | apihead.h | FTSFTP90.lib | |
Windows Server 2008 | Visual Studio 2005 (SP1) | apihead.h | FTSFTP80.lib |
Visual Studio 2008 | apihead.h | FTSFTP90.lib | |
Windows Server 2008 (IPF) | Visual Studio 2005 (SP1) | apihead.h | FTSFTP80.lib |
Visual Studio 2008 | apihead.h | FTSFTP90.lib |
ヘッダファイルおよびインポートライブラリについては,各OSに対応したJP1/FTPに格納されているものを使用してください。格納先は,「付録A ファイルおよびディレクトリ一覧」を参照してください。
環境設定
SERVICESの設定
JP1/FTP Clientのサービス名「ftsc」を設定します。詳しくは,「2.2.2 ポート番号を設定する」を参照してください。
HOSTSの設定
クライアント側のJP1/FTPが動作しているホストのホスト名とIPアドレスを設定します。このホスト名はfts_ftp_open()の第1引数,伝送情報構造体で指定します。
OSのインストールディレクトリ¥system32¥drivers¥etc¥HOSTSに次の1行を追加してください。
xxx.xxx.xxx.xxx yyyyyy
コーディング
伝送情報の指定
ファイル伝送要求の登録は,fts_ftp_syn_request_ex(),fts_ftp_asyn_request_ex()の引数に登録済みの伝送カード名や伝送情報構造体のアドレスを設定します。
typedef struct _FTS_FTP_API_DATA_EX {
char cardname[20+1];
char host[256+1];
unsigned int portnum;
char username[50+1];
char password[50+1];
int type;
int cmd;
int mode;
char quote[300+1];
char localname[260+1];
char remotename[260+1];
char end_program[260+1];
char abend_program[260+1];
char comment[80+1];
int fsize;
char reserve[1240]; /*予約領域*/
} FTS_FTP_API_DATA_EX;
cardname :カード名称を指定します。
host :FTPのホスト名を指定します。ftp>open aaaa
portnum :FTPのポート番号を指定します。ftp>open aaaa bbbb
username :ログイン名を指定します。ftp>user aaaa
password :パスワードを指定します。
type :伝送モードを指定します。
FTS_TYPE_A データをASCIIコードと解釈し,送信します。
ftp>ascii
FTS_TYPE_I データをイメージと解釈し,送信します。
ftp>binary
cmd :伝送の種類を指定します。
単/複伝送をORで指定することで,単一ファイル伝送または
複数ファイル伝送を組み合わせて指定できます。
ただし,この指定は受信の場合だけ有効です。
伝送の種類
FTS_CMD_SEND 送信します。 ftp>put aaaa bbbb
FTS_CMD_RECV 受信します。 ftp>get cccc ddddd
FTS_CMD_APPE 送信(追加)します。 ftp>append eeee fffff
単/複伝送
FTS_MLT_AUTO 単一ファイル伝送と複数ファイル伝送を
自動で切り替えます。デフォルトです。
FTS_MLT_MULTIPLE 複数ファイル伝送をします。
FTS_MLT_SINGLE 単一ファイル伝送をします。
FTS_MLT_AUTOでは,次のように伝送が自動切り替えされます。
送信の場合:ローカルファイル名に,*または?が使用されている
か判定し,*または?が使用されていれば複数ファイ
ル伝送に,使用されていなければ単一ファイル伝送
に切り替わります。
受信の場合:リモートファイル名に,*または?が使用されている
か判定し,*または?が使用されていれば複数ファイ
ル伝送に,使用されていなければ単一ファイル伝送
に切り替わります。
(例)
単一ファイルの受信
cmd = FTS_CMD_RECV | FTS_MLT_SINGLE;
mode :圧縮伝送の指定します。
FTS_MODE_S 圧縮伝送をしません。
FTS_MODE_C 圧縮伝送をします。
quote :実行したいFTPコマンドを指定します。
CWD,SITEなどのコマンドをセミコロン(';')で
区切った文字列(文字列の最後は'¥0')
localname :ローカルファイル名を指定します。
(例)ftp>put aaaa bbbb
ftp>get cccc dddd
remotename :リモートファイル名を指定します。
(例)ftp>put aaaa bbbb
ftp>get cccc dddd
end_program :伝送正常終了時に起動するプログラム名をフルパスで指定します。
abend_program:伝送異常終了時に起動するプログラム名をフルパスで指定します。
comment :任意の文字列を指定できます。
fsize :伝送後のファイルサイズ確認の有無を指定します。
FTS_FSIZE_TRUE サイズ確認をします。
FTS_FSIZE_FALSE サイズ確認をしません。
伝送終了情報の取得
fts_ftp_syn_request_ex(),fts_ftp_asyn_request_ex()で登録した伝送要求に対する終了情報を取得できます。
typedef struct _FTS_FTP_API_RETDATA_EX {
/* 常時のデータ */
int trans_status; /* 伝送終了状態 成功(TRANS_SUCCESS) */
/* 伝送終了情報 失敗(TRANS_FAILURE) */
char cardname[20+1]; /* カード名称 */
unsigned long trno; /* 伝送番号 */
unsigned long trcno; /* 接続番号 */
/* 伝送成功時のデータ */
unsigned long trans_size; /* 伝送データサイズ */
/* 伝送(圧縮)成功時のデータ */
unsigned long trans_size_comp; /* 圧縮後伝送データサイズ */
/* 失敗時のデータ */
int ab_kind; /* システムコールエラー(FTS_ERR_SYSTEM) */
/* 論理エラー(FTS_ERR_LOGIC) */
/* プロトコルエラー(FTS_ERR_PROTOCOL) */
char ab_place[8]; /* エラー発生場所 */
char ab_func[32]; /* エラー発生モジュール名称 */
char ab_system[32]; /* システムコール名称 */
int ab_syskind; /* システムコール種別 */
/* Win32 API(FTS_SYSKIND_WIN32) */
/* C runtime(FTS_SYSKIND_CRUNTIME) */
/* WinSock API(FTS_SYSKIND_WINSOCK) */
unsigned long ab_errno; /* エラー番号 */
char ab_promes[256]; /* プロトコルメッセージ(エラー) */
/* 4ギガバイトを超えた伝送成功時のデータ */
DWORD trans_size_Low; /* 伝送データサイズ(下位32ビットの値)*/
LONG trans_size_High; /* 伝送データサイズ(上位32ビットの値)*/
/* 4ギガバイトを超えた伝送(圧縮)成功時のデータ */
DWORD trans_size_comp_Low;
/* 圧縮後伝送データサイズ(上位32ビットの値)*/
LONG trans_size_comp_High;
/* 圧縮後伝送データサイズ(下位32ビットの値)*/
char reserve[1668]; /* 予約領域 */
} FTS_FTP_API_RETDATA_EX;
typedef struct _FTS_FTP_API_RETDATA_EX {
/* 常時のデータ */
int trans_status; /* 伝送終了状態 成功(TRANS_SUCCESS) */
/* 伝送終了情報 失敗(TRANS_FAILURE) */
char cardname[20+1]; /* カード名称 */
unsigned long trno; /* 伝送番号 */
unsigned long trcno; /* 接続番号 */
/* 伝送成功時のデータ */
__int64 trans_size; /* 伝送データサイズ */
/* 伝送(圧縮)成功時のデータ */
__int64 trans_size_comp; /* 圧縮後伝送データサイズ */
/* 失敗時のデータ */
int ab_kind; /* システムコールエラー(FTS_ERR_SYSTEM) */
/* 論理エラー(FTS_ERR_LOGIC) */
/* プロトコルエラー(FTS_ERR_PROTOCOL) */
char ab_place[8]; /* エラー発生場所 */
char ab_func[32]; /* エラー発生モジュール名称 */
char ab_system[32]; /* システムコール名称 */
int ab_syskind; /* システムコール種別 */
/* Win32 API(FTS_SYSKIND_WIN32) */
/* C runtime(FTS_SYSKIND_CRUNTIME) */
/* WinSock API(FTS_SYSKIND_WINSOCK) */
unsigned long ab_errno; /* エラー番号 */
char ab_promes[256]; /* プロトコルメッセージ(エラー) */
char reserve[1684]; /* 予約領域 */
} FTS_FTP_API_RETDATA_EX;
trans_status :伝送の終了状態を示す次の値を返します。
TRANS_SUCCESS(正常終了)
TRANS_FAILURE(異常終了)
cardname :伝送のカード名称を返します。
trno :伝送番号を返します。
trcno :接続番号を返します。
trans_size :(正常終了時だけ)
伝送データサイズ
trans_size_comp :(正常終了時だけ)
伝送データサイズ(圧縮)
ab_kind :(異常終了時だけ)
エラー種別を返します。
FTS_ERR_SYSTEM(システムコールエラー)
FTS_ERR_LOGIC(論理エラー)
FTS_ERR_PROTOCOL(プロトコルエラー)
ab_place :(異常終了時だけ)
エラー発生場所を返します。
ab_func :(異常終了時だけ)
エラー発生モジュール名称を返します。
ab_system :(異常終了時だけ)
システムコール名称を返します。
ab_syskind :(異常終了時だけ)
システムコール種別を返します。
FTS_SYSKIND_WIN32(Win32 API)
FTS_SYSKIND_CRUNTIME(C runtime)
FTS_SYSKIND_WINSOCK(WinSock API)
ab_errno :(異常終了時だけ)
システムコールエラー番号を返します。
ab_promes :(異常終了時だけ)
FTPサーバより送られてきたプロトコルメッセージを
返します。
trans_size_Low :(正常終了時だけ)
伝送データサイズの下位32ビットの値を返します。
trans_size_High :(正常終了時だけ)
伝送データサイズの上位32ビットの値を返します。
trans_size_comp_Low :(正常終了時だけ)
圧縮後の伝送データサイズの下位32ビットの値を返
します。
trans_size_comp_High :(正常終了時だけ)
圧縮後の伝送データサイズの上位32ビットの値を返
します。
WSAStartUp() winsockライブラリ
WSACleanUp() winsockライブラリ
リンク
ライブラリの関数を使用したプログラムを作成する場合は,FTSFTP.LIBをリンクしてください。
ライブラリ使用時の注意事項