JP1/File Transmission Server/FTP(Windows(R)用)

[目次][索引][前へ][次へ]


ライブラリの使用方法

JP1/FTP APIライブラリは,JP1/FTPのファイル伝送機能をユーザプログラムから利用するときに使用します。

JP1/FTP APIライブラリを使用して,次のことができます。

関数を使用するための前提条件

JP1/FTPが提供する関数を使用するために必要なものを次に示します。

環境設定

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

(凡例)
xxx.xxx.xxx.xxx:IPアドレス
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  サイズ確認をしません。

注意事項
char型の変数値の最後は,「\0」にしてください。

伝送終了情報の取得

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ビットの値を返
                           します。
 

リンク

ライブラリの関数を使用したプログラムを作成する場合は,FTSFTP.LIBをリンクしてください。

ライブラリ使用時の注意事項

[目次][前へ][次へ]


[他社商品名称に関する表示]

All Rights Reserved. Copyright (C) 2006, 2008, Hitachi, Ltd.