Какую ошибку вы получаете от setsockopt()
вызова, который вы делаете, чтобы применить IP_ADD_MEMBERSHIP
и присоединиться к группе многоадресной рассылки?
Я только что провел здесь некоторые тесты с моей серверной платформой, и я отмечаю, что я действительно звоню bind()
в Windows 7 (у меня нет коробки с Vista), и я могу затем присоединиться к многоадресной группе как ожидается, если действительны как адрес привязки, так и адрес многоадресной рассылки.
Однако я не могу вызвать bind () с INADDR_ANY
, так как это приводит к сбою объединения многоадресной группы с ошибкой 10022 (WSAEINVAL
), и если адрес многоадресной группы не является действительным адресом многоадресной рассылки, вызов завершается неудачно с ошибкой 10049 (WSAEADDRNOTAVAIL
). Что все кажется достаточно справедливым.
Сейчас я загружаю XP-коробку ...
[Отредактировано после тестирования в XP]
В XP разрешено bind()
до INADDR_ANY
и разрешено использовать недопустимые адреса многоадресной рассылки. Итак, я ожидаю, что вы делаете один из них, и поэтому он работает на XP, а не на Vista / Win7.
Итак, какую ошибку вы получаете и к какому адресу вы привязываетесь?