Indy 10 и настройки сокетов - PullRequest
       4

Indy 10 и настройки сокетов

1 голос
/ 18 января 2011

Может быть, решение этого очень простое, и я просто слишком туп, чтобы это увидеть.Мне нужно перекомпилировать старое приложение с Indy 10 и есть эта строка, которая раньше была

inUDPServer.Binding.SetSockOpt(Id_IPPROTO_IP, Id_IP_ADD_MEMBERSHIP, PChar(@mreq), SizeOf(mreq));

, но новый TIdSocketHandle.SetSockOpt занимает 3 целых числа.Теперь, как я должен предоставить ip_mreq?Простая передача imr_multiaddr.S_addr приводит к ошибке # 10014 Ошибка - ошибка буфера.Может, у кого-то из вас есть идея.

Приветствия Энди

1 Ответ

1 голос
/ 20 января 2011

Вместо этого используйте метод TIdSocketHandle.AddMulticastMembership() (если в вашей версии Indy 10 этот метод недоступен, вам придется сначала обновить его до более нового снимка), например:

inUDPServer.Binding.AddMulticastMembership('Group IP address');

ДобавляетTIdSocketHandle.IP адрес членства указанной группы IP.IP-адреса могут быть указаны как IPv4 или IPv6, в зависимости от настройки свойства TIdSocketHandle.IPVersion.

В качестве альтернативы рассмотрите возможность использования компонентов TIdIPMCastServer и TIdIPMCastClient вместо TIdUDPServer напрямую.

...