Hitachi

JP1 Version 12 JP1/File Transmission Server/FTP(UNIX(R)用)


ライブラリの使用方法

JP1/FTP APIライブラリは,JP1/FTPのファイル伝送機能をユーザプログラムから利用するときに使用します。APIライブラリは,32ビット用(ILP32データモデル)および64ビット用(LP64データモデル)を提供しています。

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

〈このページの構成〉

言語

ユーザプログラムで使用できる言語を次に示します。

環境設定

/etc/servicesの設定

JP1/FTP Clientのサービス名「ftsc」を設定します。詳しくは,「2.3.3 ポート番号を設定する」を参照してください。

/etc/hostsの設定

クライアント側のJP1/FTPデーモンが動作しているホストのホスト名とIPアドレスを設定します。このホスト名は接続情報構造体,伝送情報構造体で指定します。

/etc/hostsに次の1行を追加してください。

xxx.xxx.xxx.xxx      yyyyyy
(凡例)

xxx.xxx.xxx.xxx :IPアドレス

yyyyyy:ホスト名

コーディング

JP1/FTPとのコネクション確立情報の指定

JP1/FTPデーモンとのコネクション確立は,fts_ftp_open_ex()の引数に接続情報構造体のアドレスを設定します。

  • 接続情報構造体

typedef struct _FTS_FTP_API_CONN_DATA {
    char hostname[256+1];           /* ホスト名 (クライアント) */
    int priority;                   /* 優先IPバージョン */
    char reserve[1784];             /* 予約領域 */
} FTS_FTP_API_CONN_DATA;
  • 接続情報構造体メンバの内容

    • hostname:クライアント側のJP1/FTPデーモンが動作しているホストのホスト名またはIPアドレスを指定します。IPアドレスの場合,IPv4またはIPv6アドレスを指定できます。NULLを指定した場合は,自ホスト名(OSのhostnameコマンドが返すホスト名:物理ホスト)が仮定されます。

      FTPクライアントでの自IPアドレスの指定を有効にした場合,この引数での指定がFTPクライアントの自IPアドレスになります。NULLを指定した場合は,FTPクライアントの物理ホストが仮定されます。

      FTPクライアントでの自IPアドレスの指定を無効にした場合,FTPクライアントの自IPアドレスは,OSが自動的に割り当てるアドレスになります。FTPクライアントでの自IPアドレスの指定を有効にする定義については,「3.15 複数IPアドレス環境での使用」を参照してください。

    • priority:優先するインターネットプロトコルバージョンを指定します。

      FTS_AF_INET:IPv4を優先します。

      FTS_AF_INET6:IPv6を優先します。

      上記以外の場合,FTS_AF_INETを仮定します。

    • reserve:予約領域です。「\0」で初期化してください。

注意事項

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

伝送情報の指定

ファイル伝送要求の登録は,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];              /* FTPコマンド */
        char localname[256+1];          /* ローカルファイル名 */
        char remotename[256+1];         /* リモートファイル名 */
        char end_program[256+1];        /* 正常時起動プログラム名*/
        char abend_program[256+1];      /* 異常時起動プログラム名 */
        char comment[80+1];             /* コメント */
        int fsize;                      /* サイズ確認 */
        int ftps;                       /* FTPS使用 */
        int scertval;                   /* サーバ証明書有効期限確認 */
        char cacertpath[256+1];         /* CA証明書パス名 */
        char crlpath[256+1];            /* CRLパス名 */
        char reserve[716];              /* 予約領域 */
    } 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')で指定します。

      指定できるコマンドは,データコネクションを確立しないコマンドに限られます。また,FTPサーバ側でコマンドが実行できるかどうかは,FTPサーバに依存します。

    • 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:サイズ確認をしません。

    • ftps:FTPS使用の有無を指定します。

      FTS_FTPS_TRUE:FTPSを使用します。

      FTS_FTPS_FALSE:FTPSを使用しません。

    • scertval:サーバ証明書の有効期限確認の有無を指定します。

      FTS_SCVAL_TRUE:有効期限確認をします。

      FTS_SCVAL_FALSE:有効期限確認をしません。

    • cacertpath:CA証明書ファイルのパス名をフルパスで指定します。

    • crlpath:CRLファイルのパス名をフルパスで指定します。

    • reserve:予約領域です。「\0」で初期化してください。

注意事項

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) */
                                  /* 強制終了エラー(FTS_ERR_FORCE) */
                                  /* SSL通信エラー(FTS_ERR_SSL) */
  char ab_place[8];               /* エラー発生場所 */
  char ab_func[32];               /* エラー発生モジュール名称 */
  char ab_system[32];             /* システムコール名称 */
  unsigned long ab_errno;         /* エラー番号 */
  char ab_promes[256];            /* プロトコルメッセージ(エラー) */
 
#ifndef FTS_API_64BIT
  char full_trans_size[8];        /* 伝送データサイズ */
  char full_trans_size_comp[8];   /* 圧縮後伝送データサイズ */
#endif
 
  int ab_sslerno;                 /* SSL通信エラー番号 */
  char reserve[1668];             /* 予約領域 */
} FTS_FTP_API_RETDATA_EX;

コンパイルとリンク

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