通用于许多传输协议的 XTI/TLI 服务集对应用程序提供协议独立性。并非所有传输协议都支持所有的 XTI/TLI 服务。如果软件必须在多种协议环境中运行,请仅使用常见服务。
以下列出了可能不通用于所有传输协议的服务。
在连接模式服务中,并非所有传输提供器都支持传输服务数据单元 (transport service data unit, TSDU)。请不要对保留连接的逻辑数据边界做出假设。
t_open(3NSL) 和 t_getinfo(3NSL) 例程返回协议和实现特定的服务限制。使用这些限制可分配缓冲区以存储特定于协议的传输地址和选项。
请勿将用户数据与连接请求和断开请求(例如 t_connect(3NSL) 和 t_snddis(3NSL))一起发送。并非所有传输协议都可以使用该方法。
t_call 结构中用于 t_listen(3NSL) 的缓冲区必须足够大,以便保留客户机在建立连接期间发送的任何数据。使用 t_alloc(3NSL) 的 T_ALL 参数可设置用于存储当前传输提供器的地址、选项以及用户数据的最大缓冲区大小。
请勿在客户端端点上的 t_bind(3NSL) 上指定协议地址。传输提供器应该为传输端点指定适当的地址。对于 t_bind(3NSL),服务器应该以不要求了解传输提供器名称空间的方法来检索其地址。
请勿对传输地址的格式做出假设。传输地址在程序中不应为常量。第 9 章,传输选择和名称到地址的映射包含有关传输选择的详细信息。
与 t_rcvdis(3NSL) 关联的原因代码与协议相关。如果协议独立性很重要,请不要解释这些原因代码。
t_rcvuderr(3NSL) 错误代码与协议相关。如果需要考虑协议独立性,请不要解释这些错误代码。
请勿将设备名称编码到程序中。设备节点标识特定的传输提供器,不独立于协议。有关传输选择的详细信息,请参见第 9 章,传输选择和名称到地址的映射。
请勿在用于多个协议环境的程序中使用由 t_sndrel(3NSL) 和 t_rcvrel(3NSL) 提供的连接模式服务的可选顺序释放功能。并非所有基于连接的传输协议都支持此功能。使用此功能可防止程序与开放系统成功通信。