Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Extension for .NET Framework 使用の手引


2.5.3 注意事項

〈この項の構成〉

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

(a) メッセージ長

通信プロトコルにTCP/IPを使用する場合,一つのメッセージを複数のパケットに分割したり,複数のメッセージを一つのパケットに詰め込んだりします。そのため,ユーザが指定するメッセージ長以外に,受信したメッセージの切れ目を判断できません。ユーザはメッセージ長を含めた固定長のヘッダを最初に受信し,ヘッダに含まれているメッセージ長を指定して,実際のメッセージを受信してください。

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

タイムアウトやエラーの発生によって,指定した長さ分のメッセージを受信していない場合でも,その時点までのメッセージを受信できます。

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

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

OSが管理するTCP/IPの送信バッファへのメッセージ書き込みが正常終了したあとで,OS内部で実際の送信が完了するまでの間に通信障害が発生した場合,SPP.NETおよび相手システムではメッセージ送信の障害を検出できません。メッセージ送受信の場合は受信時に障害検知やタイムアウトによって検知できますが,一方送信の場合は正常終了します。したがって,ユーザはあらかじめメッセージ中に通番を付けるなどして,障害に備えてください。

(3) その他の注意事項

通信プロトコルにTCP/IPを使用する場合,TP1/NET/TCP/IPまたはTP1/Messagingの受信メッセージの組み立て機能を使用すると,相手システムが送信したデータの先頭に4バイトのメッセージ長が付与されます。また,相手システムにデータを送信する場合は,先頭4バイトにメッセージ長を設定する必要があります。メッセージ長は,ネットワークバイトオーダーにしてください。なお,このメッセージ長は,相手システムが受信するときには削除されます。SPP.NETでは,送信時および受信時に,メッセージ長を意識する必要があるので注意してください。TP1/NET/TCP/IPまたはTP1/Messagingの受信メッセージの組み立て機能を使用する場合は,TP1/NET/TCP/IPまたはTP1/Messagingのプロトコル固有定義で次のように指定します。

mcftalccn -u masm=yes

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