Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編


2.5.3 メッセージの送受信

CUPとMHPとの間で,メッセージを送受信できます。

メッセージの送受信を行う場合は,CUPでflagsにDCCLT_SNDRCVを指定したdc_rpc_open_s関数を実行しておく必要があります。メッセージの送受信は,コネクションが解放されていなければ同じコネクションを使用してメッセージを送受信します。

MHPがサーバ型の場合

CUPからMHPに対してメッセージを送信した際に確立したコネクションを使用してメッセージの送受信を行います。このため,CUPでは受信用のソケットを使用しません。

CUPからdc_clt_send_s関数を実行してMHPへメッセージを送信します。その上でdc_clt_receive_s関数,またはdc_clt_receive2_s関数を実行して,MHPからのメッセージを受信します。メッセージの組み立て機能,または送達確認機能を使用する場合は,CUPからdc_clt_assem_send_s関数を実行してMHPへメッセージを送信します。その上でdc_clt_assem_receive_s関数を実行してMHPからのメッセージを受信します。

MHPがクライアント型の場合

MHPから送信されたメッセージをCUPで受信した際に確立したコネクションを使用してメッセージの送受信を行います。

CUPでdc_clt_receive_s関数,またはdc_clt_receive2_s関数を実行して,MHPからのメッセージを受信します。その上でdc_clt_send_s関数を実行してMHPへメッセージを送信します。メッセージの組み立て機能,または送達確認機能を使用する場合は,CUPでdc_clt_assem_receive_s関数を実行してMHPからのメッセージを受信します。その上でdc_clt_assem_send_s関数を実行してMHPへメッセージを送信します。

メッセージを送受信するには,次に示す指定をしておく必要があります。クライアント環境定義の各オペランドの詳細については,「8.2.5 TP1/Client/WとTP1/Client/Pで共通のオペランド」を参照してください。

MHPがサーバ型の場合
  • 接続先のノード名を次のどちらかの方法で指定します。

    (a) dc_clt_send_s関数,またはdc_clt_assem_send_s関数の引数hostnameに指定

    (b) クライアント環境定義DCSNDHOSTに指定

  • 接続先のポート番号(MCF通信構成定義の定義コマンドmcftalccnのportnoオペランドで指定したポート番号)を次のどちらかの方法で指定します。

    (c) dc_clt_send_s関数,またはdc_clt_assem_send_s関数の引数portnumに指定

    (d) クライアント環境定義DCSNDPORTに指定

  • クライアント環境定義DCSOCKOPENATRCVにYを指定します。

    CUPでは受信用ソケットを使用しません。クライアント環境定義DCSOCKOPENATRCVにYを指定し,受信用ソケットを開設しないでください。

MHPがクライアント型の場合

クライアント環境定義DCRCVPORTにCUPの受信用ポート番号(MCF通信構成定義の定義コマンドmcftalccnのoportnoで指定したポート番号)を指定してください。

マルチスレッドで動作するCUPを含め,同一マシンでCUPを複数実行する場合は,クライアント環境定義DCRCVPORTをCUPごと(スレッドごと)に異なるポート番号となるように設定してください。CUPごとのクライアント環境定義の設定方法については,「8.2.3 TP1/Client/Wの設定方法」,および「8.2.4 TP1/Client/Pの設定方法」を参照してください。

メッセージの送受信を次の図に示します。

図2‒21 メッセージの送受信

[図データ]