Hitachi

JP1 Version 10 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 Studio 2005 (SP1)

apihead.h

FTSFTP80.lib

Visual Studio 2008

apihead.h

FTSFTP90.lib

Visual Studio 2010

apihead.h

FTSFTP100.lib

Windows Server 2008

Visual Studio 2005 (SP1)

apihead.h

FTSFTP80.lib

Visual Studio 2008

apihead.h

FTSFTP90.lib

Visual Studio 2010

apihead.h

FTSFTP100.lib

Windows Server 2012

Visual Studio 2005 (SP1)

apihead.h

FTSFTP80.lib

Visual Studio 2008

apihead.h

FTSFTP90.lib

Visual Studio 2010

apihead.h

FTSFTP100.lib

ヘッダファイルおよびインポートライブラリについては,各OSに対応したJP1/FTPに格納されているものを使用してください。格納先は,「付録A ファイルおよびディレクトリ一覧」を参照してください。なお,Visual Studio自体をインストールできるOSは,Visual Studioの仕様に依存します。

環境設定

SERVICESの設定

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

HOSTSの設定

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

OSのインストールディレクトリ\system32\drivers\etc\HOSTSに次の1行を追加してください。

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

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

yyyyyy:ホスト名

コーディング

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

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

  • 接続情報構造体

typedef struct _FTS_FTP_API_CONN_DATA {
    char hostname[256];
    int priority;
} FTS_FTP_API_CONN_DATA;
  • 接続情報構造体メンバの内容

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

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

      NULLを指定した場合は,FTPクライアントの物理ホストが仮定されます。

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

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

      FTS_AF_INET:IPv4を優先します。

      FTS_AF_INET6:IPv6を優先します。

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

    注意事項

    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[50+1];
    char password[50+1];
    int type;
    int mode;
    int cmd;
    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

    • mode:圧縮伝送の指定します。

       FTS_MODE_S 圧縮伝送をしません。

       FTS_MODE_C 圧縮伝送をします。

    • 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')

      指定できるコマンドは,データコネクションを確立しないコマンドに限られます。また,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:サイズ確認をしません。

    注意事項

    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;

リンク

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

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