Поделиться через


Многодомение и PGM

Особое внимание следует учитывать для многодомных отправителей или получателей PGM. На этой странице описаны важные аспекты и приведены рекомендации по лучшим практикам программирования.

Многодомный отправитель PGM

Если приложению не удается указать интерфейс при вызове функции подключения, используется первый доступный интерфейс. Если интерфейс недоступен, подключение не удаётся.

Если приложение задает интерфейс с помощью параметра сокета RM_SET_SEND_IF, то к этому интерфейсу неявно осуществляется попытка привязкичерез TCP/IP, и она завершается ошибкой, если TCP/IP не удается выполнить запрос на привязку. Если интерфейс устанавливается с помощью RM_SET_SEND_IF несколько раз, применим только последний успешно установленный интерфейс.

Сокеты Windows отслеживают, какой интерфейс установлен, и если этот интерфейс исчезнет, то сеанс будет отключен.

Многодомный приемник PGM

Если приложению не удается указать интерфейс при вызове функции прослушивания, используется интерфейс по умолчанию. Если интерфейс недоступен, привязка не удается.

Если приложение задает один или несколько интерфейсов, на которых требуется прослушивать, используя RM_ADD_RECEIVE_IF, сокеты Windows пытаются привязаться к запрошенным интерфейсу или интерфейсам с помощью TCP/IP. Любая ошибка из TCP/IP приводит к сбою этого запроса. В отличие от случая с отправителем PGM, многократное добавление интерфейса получения приводит к тому, что прослушивания активируются на всех успешно добавленных интерфейсах. Используйте параметр сокета RM_DEL_RECEIVE_IF, чтобы прекратить прослушивание интерфейса.

Windows Sockets API не поддерживает состояние для нескольких указанных интерфейсов прослушивания и вместо этого полагается на TCP/IP. Когда сеанс уже начался, сокеты Windows отслеживают входящий интерфейс для этого сеанса, и если интерфейс исчезает, сокеты Windows отключают сеанс.