Hitachi

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


2.5.6 TCP/IP通信機能を使用するときの注意事項

TCP/IP通信機能を使用するときの注意事項について説明します。

〈この項の構成〉

(1) メッセージ送信時の注意事項

(a) 障害発生時のメッセージの消失

次に示す障害が発生すると,TP1/Clientでは,メッセージが消失したことを検出できません。したがって,ユーザはメッセージ中に通番を付けるなどして,障害に備えてください。ただし,メッセージの送達確認機能を使用する場合は,TP1/Clientがメッセージの通番を管理するため,CUPに処理を作り込む必要はありません。

  • ソケットのバッファにTP1/Clientが送信したメッセージが書き込まれて送信が正常終了した直後に,通信障害が発生したり,コネクションが解放されたりした場合

  • TP1/Clientが送信したメッセージがMHPの受信バッファに書き込まれる直前に通信障害が発生したり,コネクションが解放されたりした場合

(b) コネクションの確立

TP1/Clientがクライアントとなり,MHPにメッセージを送信します。そのため,TP1/ClientからMHPに対して,コネクションを確立します。MHPがTP1/NET/TCP/IPを使用している場合,コネクションはサーバ型となります。

(2) メッセージ受信時の注意事項

(a) 障害発生時のメッセージの消失

次に示す障害が発生すると,TP1/Clientでは,メッセージが消失したことを検出できません。したがって,ユーザはメッセージ中に通番を付けるなどして,障害に備えてください。ただし,メッセージの送達確認機能を使用する場合は,TP1/Clientがメッセージの通番を管理するため,CUPに処理を作り込む必要はありません。

  • ソケットのバッファにMHPが送信したメッセージが書き込まれて送信が正常終了した直後に,通信障害が発生したり,コネクションが解放されたりした場合

  • MHPが送信したメッセージがTP1/Client側の受信バッファに書き込まれる直前に通信障害が発生したり,コネクションが解放されたりした場合

(b) 受信するメッセージの確認

任意のMHPからのメッセージを受信できます。そのため,コネクションの確立要求を受けると,その要求を無条件に受諾してメッセージを受信します。ユーザは,メッセージ識別子が含まれたヘッダをメッセージ中に含めるなどして,CUPが受け取るメッセージかどうかを確認してください。

(c) メッセージ長

TCP/IPプロトコルを使用してメッセージを受信します。

TCP/IPプロトコルでは,一つのメッセージを複数のパケットに分割したり,複数のメッセージを一つのパケットに詰め込んだりします。そのため,受信したメッセージの切れ目は,ユーザが指定するメッセージ長で判断します。ユーザはメッセージ長を含めた固定長のヘッダを最初に受信し,ヘッダに含まれているメッセージ長を指定して,実際のメッセージを受信してください。ただし,メッセージ組み立て機能,またはメッセージの送達確認機能を使用する場合は,TP1/Clientがメッセージ長を管理するため,CUPに処理を作り込む必要はありません。

指定したメッセージ長より短いメッセージを受信した場合,TP1/Clientは,メッセージが分割されているものとみなします。そのため,指定した長さ分のメッセージを受信するまで,CUPに制御を戻しません。

(d) コネクションの確立

TP1/Clientがサーバとなり,MHPからのメッセージを受信します。そのため,MHPからTP1/Clientに対して,コネクションを確立します。MHPがTP1/NET/TCP/IPを使用している場合,コネクションはクライアント型となります。

(3) その他の注意事項

ここでは,TP1/NET/TCP/IPの受信メッセージの組み立て機能,およびメッセージの送達確認機能を使用するときの注意事項について説明します。なお,TP1/Clientのメッセージの組み立て機能,およびメッセージの送達確認機能を利用する場合は,CUPを作成するときに,これらの注意事項を意識する必要はありません。

TP1/NET/TCP/IPのプロトコル固有定義の詳細については,マニュアル「OpenTP1 プロトコル TP1/NET/TCP/IP編」を参照してください。

(a) TP1/NET/TCP/IPの受信メッセージの組み立て機能

TP1/NET/TCP/IPの受信メッセージの組み立て機能を使用すると,MHPが送信したデータの先頭に4バイトのメッセージ長が付与されます。また,MHPにデータを送信する場合は,先頭4バイトにメッセージ長を設定する必要があります。メッセージ長は,ネットワークバイトオーダーにしてください。なお,このメッセージ長は,MHPが受信するときには削除されます。CUPでは,送信時および受信時に,メッセージ長を意識する必要があるので注意してください。

(b) TP1/NET/TCP/IPの受信メッセージの送達確認機能

TP1/NET/TCP/IPのメッセージの送達確認機能を使用すると,MHPが送信したデータの先頭に11バイトのメッセージ情報が付与されます。さらに,受信完了後は,応答専用データを送信します。また,MHPにデータを送信する場合は,先頭11バイトにメッセージ情報を設定する必要があります。送信完了後は,応答専用データの到着を待ち合わせます。

メッセージ情報中のメッセージ長は,ネットワークバイトオーダーにしてください。なお,このメッセージ長は,MHPが受信するときには削除されます。CUPでは,送信時および受信時に,メッセージ情報を意識する必要があるので注意してください。