Linkexpress 利用者プログラム開発ガイド |
目次
索引
![]() ![]() |
付録A サンプル | > A.1 転送APIのサンプル |
このサンプルプログラムは、以下のファイルに格納されています。
PCサーバ : インストールディレクトリ\sample\api\respapl2.c
UNIXサーバ : インストールディレクトリ/SAMPLE/api/respapl2.c
このサンプルプログラムは、相手システムからのファイル転送要求に対する応答を行うものです。プログラムの説明を以下に示します。
1つ目のGETINFでファイル転送の開始通知を受け取り、その内容に対する応答をFTRNRSPで返しています。このサンプルプログラムの場合は、指定されたファイル以外のファイル名を指定して応答しています。
2つ目のGETINFでファイル転送の完了通知を受け取り、TRANCOMPでその旨をLinkexpressに通知しています。また、このTRANCOMPにより、続くファイル転送要求を同一のプログラムが継続して受け取ることを通知しています。
3つ目のGETINFとそれに続くFTRNRSPは、1つ目のGETINFとそれに続くFTRNRSPと同様のことを行っています。
4つ目のGETINFは、2つ目のGETINFと同様の処理を行っています。ただし、それに続くTRANCOMPでは、完了通知を受け取ったことをLinkexpressに通知すると同時に、続くファイル転送要求は同一のプログラムでは受け取らないことを通知しています。
respapl2.cの内容を以下に示します。
/* * * All Rights Reserved Copyright (c) FUJITSU LIMITED 1997-2005 * */ /* * API sample program (resp no.2) */ /* * include file */ #include <sys/types.h> #include <string.h> #include <stdio.h> #include <fcntl.h> #include <lxapi.h> int main() { unsigned long req_ident; FILE *ofp; /* * getinf */ { dts_getinf_dcb_t input_dcb; dts_get_information_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_getinf_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_get_information_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_RESP; input_dcb.info_kind = DTS_API_START_INFO; input_dcb.timer = 0; input_dcb.path_name = 0; getinf( &input_dcb, &output_dcb ); req_ident = output_dcb.getinf_data.tstart.req_ident; } /* * ftrnrsp */ { dts_ftrnrsp_dcb_t input_dcb; dts_diagnostic_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_ftrnrsp_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_diagnostic_t) ); input_dcb.req_ident = req_ident; input_dcb.appl_name = "@_USRAPL"; input_dcb.attest_code = DTS_API_OK; input_dcb.error_detail = 0; input_dcb.local_user = 0; input_dcb.file_name = 0; input_dcb.file_attr = 0; input_dcb.data_type = 0; input_dcb.speed = 0; input_dcb.ret_tid = 0; ftrnrsp( &input_dcb, &output_dcb ); } /* * getinf */ { dts_getinf_dcb_t input_dcb; dts_get_information_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_getinf_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_get_information_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_RESP; input_dcb.info_kind = DTS_API_END_INFO; input_dcb.timer = 0; input_dcb.path_name = 0; getinf( &input_dcb, &output_dcb ); req_ident = output_dcb.getinf_data.tcomp.req_ident; ofp = fopen("C:\\test\\api\\resp1.txt", "a"); (void)fprintf(ofp, "getinf\n"); (void)fprintf(ofp, "req_ident = %d\n", req_ident); (void)fprintf(ofp, "service_kind = %d\n", output_dcb.service_kind); (void)fprintf(ofp, "system_name = %s\n", output_dcb.getinf_data.tcomp.system_name); (void)fprintf(ofp, "path_name = %s\n", output_dcb.getinf_data.tcomp.path_name); (void)fprintf(ofp, "flow_kind = %d\n", output_dcb.getinf_data.tcomp.flow_kind); (void)fprintf(ofp, "start_time = %s", ctime( (time_t *)&output_dcb.getinf_data.tcomp.start_time ) ); (void)fprintf(ofp, "comp_time = %s", ctime( (time_t *)&output_dcb.getinf_data.tcomp.comp_time ) ); (void)fprintf(ofp, "data_size = %d\n", output_dcb.getinf_data.tcomp.data_size); (void)fprintf(ofp, "comp_type = %d\n", output_dcb.getinf_data.tcomp.trn_comptype); (void)fprintf(ofp, "\n"); (void)fflush(ofp); (void)fclose(ofp); } /* * trancomp */ { dts_trancomp_dcb_t input_dcb; dts_diagnostic_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_trancomp_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_diagnostic_t) ); input_dcb.req_ident = req_ident; input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_RESP; input_dcb.appl_cont = DTS_API_APLCONT; trancomp( &input_dcb, &output_dcb ); } /* * getinf2 */ { dts_getinf_dcb_t input_dcb; dts_get_information_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_getinf_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_get_information_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_RESP; input_dcb.info_kind = DTS_API_START_INFO; input_dcb.timer = 0; input_dcb.path_name = 0; getinf( &input_dcb, &output_dcb ); req_ident = output_dcb.getinf_data.tstart.req_ident; } /* * ftrnrsp2 */ { dts_ftrnrsp_dcb_t input_dcb; dts_diagnostic_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_ftrnrsp_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_diagnostic_t) ); input_dcb.req_ident = req_ident; input_dcb.appl_name = "@_USRAPL"; input_dcb.attest_code = DTS_API_OK; input_dcb.error_detail = 0; input_dcb.local_user = 0; input_dcb.file_name = 0; input_dcb.file_attr = 0; input_dcb.data_type = 0; input_dcb.speed = 0; input_dcb.ret_tid = 0; ftrnrsp( &input_dcb, &output_dcb ); } /* * getinf2 */ { dts_getinf_dcb_t input_dcb; dts_get_information_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_getinf_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_get_information_t) ); input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_RESP; input_dcb.info_kind = DTS_API_END_INFO; input_dcb.timer = 0; input_dcb.path_name = 0; getinf( &input_dcb, &output_dcb ); req_ident = output_dcb.getinf_data.tcomp.req_ident; } /* * trancomp2 */ { dts_trancomp_dcb_t input_dcb; dts_diagnostic_t output_dcb; /* * clear parameters */ memset( &input_dcb, 0, sizeof(dts_trancomp_dcb_t) ); memset( &output_dcb, 0, sizeof(dts_diagnostic_t) ); input_dcb.req_ident = req_ident; input_dcb.appl_name = "@_USRAPL"; input_dcb.req_kind = DTS_API_RESP; input_dcb.appl_cont = DTS_API_APLCONT; trancomp( &input_dcb, &output_dcb ); } return( 1 ); }
参照
lxapi.h、dts_getinf_dcb_t、dts_get_information_t、dts_ftrnrsp_dcb_t、dts_diagnostic_t、dts_trancomp_dcb_t
用語解説
目次
索引
![]() ![]() |