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では,送信時および受信時に,メッセージ情報を意識する必要があるので注意してください。