多宿主和 PGM

必须特别考虑多宿主 PGM 发送方或接收方。 本页介绍注意事项,并提供最佳编程做法指南。

多宿主 PGM 发送方

当应用程序在调用 connect 函数时未能指定接口时,将使用第一个可用接口。 如果没有可用的接口, 连接 将失败。

当应用程序使用 RM_SET_SEND_IF 套接字选项指定接口时,将使用 TCP/IP 隐式尝试绑定到该接口,如果 TCP/IP 未能通过绑定请求,则会失败。 如果使用 RM_SET_SEND_IF 多次设置接口,则只有最后一个成功设置的接口才适用。

Windows 套接字维护设置的接口,如果该接口消失,会话将断开连接。

多宿主 PGM 接收器

当应用程序在调用 listen 函数时未能指定接口时,将使用默认接口。 如果没有可用的接口, 绑定 将失败。

当应用程序使用 RM_ADD_RECEIVE_IF 指定要侦听的一个或多个接口时,Windows 套接字会尝试使用 TCP/IP 绑定到请求的接口或接口。 来自 TCP/IP 的任何错误都会导致此请求失败。 与 PGM 发送方情况不同,多次添加接收接口会导致侦听在所有成功添加的接口上发布。 使用 RM_DEL_RECEIVE_IF 套接字选项停止侦听接口。

Windows 套接字不维护有关多个指定侦听接口的状态,而是依赖于 TCP/IP 来执行此操作。 但是,一旦会话正在进行,Windows 套接字将跟踪该会话的传入接口,如果该接口消失,Windows 套接字将断开会话的连接。