XTI/TLI が提供する一連のサービスは、多くのトランスポートプロトコルに共通であり、XTI/TLI を使用すると、アプリケーションはプロトコルに依存しない処理が可能になります。ただし、すべてのトランスポートプロトコルが XTI/TLI をサポートしているわけではありません。ソフトウェアをさまざまなプロトコル環境で実行する必要がある場合は、共通のサービスだけを使用してください。
次に示すサービスはすべてのトランスポートプロトコルに共通とは限らないので、注意してください。
コネクションモードのサービスでは、すべてのトランスポートプロバイダで転送サービスデータユニット (TSDU) がサポートされるとは限りませんので、コネクションの際に論理的なデータ境界が保たれることを前提としないでください。
プロトコルおよび実装に固有なサービスの制限は、t_open(3NSL) および t_getinfo(3NSL) ルーチンによって返されます。これらの制限に基づいてバッファーを割り当て、プロトコルに固有なトランスポートアドレスおよびオプションを格納してください。
t_connect(3NSL) や t_snddis(3NSL) などの接続要求や切断要求を使用してユーザーデータを送信してはなりません。これは、すべてのトランスポートプロトコルがこの方法を使用できるわけではないためです。
t_listen(3NSL) で使用される t_call 構造体のバッファーには、コネクション確立時にクライアントが送信するデータを格納できるだけの容量が必要です。t_alloc(3NSL) の T_ALL 引数を使用して、最大バッファーサイズを設定し、現在のトランスポートプロバイダのアドレス、オプション、およびユーザーデータを格納します。
クライアント側の終端では、t_bind(3NSL) のプロトコルアドレスを指定しないでください。トランスポートプロバイダがトランスポート終端に適切なプロトコルアドレスを割り当て、サーバーは、トランスポートプロバイダの名前空間を知らなくても、t_bind(3NSL) のプロトコルアドレスを取り込むことができなければなりません。
トランスポートアドレスの形式を仮定しないでください。また、トランスポートアドレスをプログラム内定数にしないでください。トランスポート選択の詳細は、第 11 章トランスポート選択と名前からアドレスへのマッピングを参照してください。
t_rcvdis(3NSL) に関連付けられた理由コードはプロトコルに依存します。プロトコルに依存しないことが重要である場合、これらの理由コードを使用しないでください。
t_rcvuderr(3NSL) エラーコードはプロトコルに依存します。プロトコルに依存しないことが重要である場合、これらのエラーコードを使用しないでください。
プログラム内にデバイス名をコーディングしないでください。デバイスノードは、特定のトランスポートプロバイダを指定し、プロトコルに依存します。トランスポート選択の詳細は、第 11 章トランスポート選択と名前からアドレスへのマッピングを参照してください。
複数のプロトコル環境で実行する予定のプログラムでは、t_sndrel(3NSL) および t_rcvrel(3NSL) が提供するコネクションモードサービスの正常型解放機能 (オプション) を使用しないでください。正常型解放機能は、すべてのコネクション型トランスポートプロトコルでサポートされているわけではありません。この機能を使用すると、解放型システムと正常に通信できなくなることがあります。