2015-11-25 2 views
0

Я хочу добавить сокет в группу, которая получает данные от сетевого хоста. На странице http://www.tldp.org/HOWTO/Multicast-HOWTO-6.html хорошо объясняется, как для этого используется опция сокета IP_ADD_MEMBERSHIP и структура данных ip_mreq. Поэтому я создаю мою структуру ip_mreq данных (я называю мой экземпляр MREQ) и заполнить оба его свойства imr_multiaddr и imr_interface, но когда я прохожу значение & MREQ в optval параметра, я получаю ошибку:Ошибка при передаче аргумента & mreq в метод setsockopt

Ошибка: Аргумент типа 'ip_mreq *' несовместим с параметром типа 'const char *'

Но почему этот параметр требует «const char *», когда руководство, которое я следую, утверждает, что параметр должен иметь тип «cont void * '. Перед этой проблемой у меня возникла проблема с тем, что структура данных ip_mreq не определена, но я решил это, импортировав библиотеку заголовков Ws2ipdef. Я думаю, проблема может заключаться в том, что я импортировал неправильную библиотеку, или мне может понадобиться импортировать дополнительную библиотеку.

Также я кодирую свое решение на C++, используя визуальные основы.

Спасибо

ответ

1

But why does that parameter require 'const char *', when the guide I'm following states that the parameter should be of type 'cont void *'

setsockopt() Поскольку используется для десятков опций сокета, кроме IP_ADD_MEMBERSHIP.

Вы должны отливать.

NB Произвольные интернет-ресурсы не являются нормативными ссылками.

+0

А я вижу, спасибо. Я бы поднял ваш ответ, если бы у меня было достаточно очков :( – user217339