JP1/FTP APIライブラリは,JP1/FTPのファイル伝送機能をユーザプログラムから利用するときに使用します。
JP1/FTP APIライブラリを使用して,次のことができます。
言語
ユーザプログラムで使用できる言語を次に示します。
環境設定
/etc/servicesの設定
JP1/FTP Clientのサービス名「ftsc」を設定します。詳しくは,「2.3.3 ポート番号を設定する」を参照してください。
/etc/hostsの設定
クライアント側のJP1/FTPデーモンが動作しているホストのホスト名とIPアドレスを設定します。このホスト名はfts_ftp_open()の第1引数,伝送情報構造体で指定します。
/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[80];
char password[80];
int type;
int cmd;
int mode;
char quote[300+1];
char localname[256+1];
char remotename[256+1];
char end_program[256+1];
char abend_program[256+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_SEND | FTS_MLT_MULTIPLE;
単一ファイルの受信
cmd = FTS_CMD_RECV | FTS_MLT_SINGLE;
自動切替で送信(追加)
cmd = FTS_CMD_APPE | FTS_MLT_AUTO;
または
cmd = FTS_CMD_APPE;
(単/複伝送指定を省略するとFTS_MLT_AUTOになります。)
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) */
/* 強制終了エラー(FTS_ERR_FORCE) */
char ab_place[8]; /* エラー発生場所 */
char ab_func[32]; /* エラー発生モジュール名称 */
char ab_system[32]; /* システムコール名称 */
unsigned long ab_errno; /* エラー番号 */
char ab_promes[256]; /* プロトコルメッセージ(エラー) */
char full_trans_size[8]; /* 伝送データサイズ */
char full_trans_size_comp[8]; /* 圧縮後伝送データサイズ */
char reserve[1672]; /* 予約領域 */
} FTS_FTP_API_RETDATA_EX;
trans_status :伝送の終了状態を示す次の値を返します。
TRANS_SUCCESS(正常終了)
TRANS_FAILURE(異常終了)
cardname :伝送のカード名称を返します。
trno :伝送番号を返します。
trcno :接続番号を返します。
trans_size :(正常終了時だけ)
伝送データサイズ(Linux(IPF)の場合に参照します。
Linux(IPF)以外の場合は伝送データサイズが4ギガバ
イト未満のときだけ参照可能です。)
trans_size_comp
:(正常終了時だけ)
圧縮後伝送データサイズ(Linux(IPF)の場合に参照し
ます。Linux(IPF)以外の場合は圧縮後伝送データサイズ
が4ギガバイト未満のときだけ参照可能です。)
ab_kind :(異常終了時だけ)
エラー種別を返します。
FTS_ERR_SYSTEM(システムコールエラー)
FTS_ERR_LOGIC(論理エラー)
FTS_ERR_PROTOCOL(プロトコルエラー)
FTS_ERR_FORCE(強制終了エラー)
ab_place :(異常終了時だけ)
エラー発生場所を返します。
ab_func :(異常終了時だけ)
エラー発生モジュール名称を返します。
ab_system :(異常終了時だけ)
システムコール名称を返します。
ab_errno :(異常終了時だけ)
システムコールエラー番号を返します。
ab_promes :(異常終了時だけ)
サーバ(着信側)より送られてきたプロトコルメッセージ
を返します。
full_trans_size
:(正常終了時だけ)
伝送データサイズ(Linux(IPF)の場合は使用できま
せん。Linux(IPF)以外の場合に参照しますが,
fts_ftp_buftoll()を使用して参照します。)
full_trans_size_comp
:(正常終了時だけ)
圧縮後伝送データサイズ(Linux(IPF)の場合は使用
できません。Linux(IPF)以外の場合に参照しますが,
fts_ftp_buftoll()を使用して参照します。)
コンパイルとリンク
ライブラリ使用時の注意事項
マルチスレッド・プログラム用ライブラリ使用時の注意事項