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

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


ライブラリの使用方法

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

(凡例)
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) 2009, Hitachi, Ltd.