传输独立远程过程调用的 IPv6 问题
Network Services Library 导出既是传输独立 (TI) RPC 例程又是传输特定 (TS) RPC 例程的远程过程调用 (RPC) 例程。
TI-RPC 例程支持 IPv6,但 TS-RPC 例程不支持 IPv6。 TI-RPC 例程中的传输选择由网络配置数据库文件中的咨询条目来处理。 此数据库文件包含 IPv6 以及 IPv4的所有传输的条目。 IPv6 或 IPv4 传输条目的选择取决于这些条目在数据库文件中的列示顺序。 对应于 IPv6 的条目将放置在列表的开头,以便可以首先尝试 IPv6 条目。 如果 IPv6 传输选择失败,那么将自动选择 IPv4 的传输。 这仅适用于简化的顶级 TI-RPC 接口例程。
TI-RPC 例程分为不同的级别。 这些级别以增加控制和复杂性的顺序对网络参数提供不同程度的控制。 有关 TI-RPC 分类的更多详细信息。
使用以下注意事项在以下每个类别中运行针对 IPv6 的 TI-RPC 应用程序:
简化的接口例程:
这些例程将在内部注册 IPv4 和 IPv6 的 RPC 服务 (如果支持机器代码)。 例如, nettype = "tcp" 将为属于 TCP 传输类的网络标识 "tcp" 和 "tcp6" 注册 RPC 服务。
顶级例程:
这些例程允许应用程序指定传输类型。 此类别下的 TI-RPC 例程还接受传输类型作为 nettype ,这是一个简单字符数组。 如果未指定,那么这些 API 将为 IPv4 和 IPv6 (如果支持机器代码) 注册 RPC 服务。 例如,nettype = "udp "将为属于 UDP 传输类的 udp 网络 ID 和udp6 networkID,注册 RPC 服务。
中间级别例程:
struct netconfig nconf = getnetconfigent("tcp6");
在此示例中, "tcp6" 是 IPv6上 TCP 传输的网络标识。专家级例程:
这些 TI-RPC 例程允许选择传输。 这些例程类似于中间级别例程,具有使用 "名称到地址" 转换 API 提供的附加控件。 这些 API 还要求使用针对 IPv4 和 IPv6的 Netselect 例程专门填充 netconfig 结构。
底层和其他例程:
这些例程允许各种应用程序与简化的顶级,中级和专家级 API 协调工作。