LINUX.ORG.RU

проблема с приёмом multicast на одном порту


0

0

Такая ситуация: есть две multicast группы (например, 239.255.0.57:5500 и 239.255.0.58:5500). Порт одинаковый! После привязки сокетов к этим группам, каждый сокет получает пакеты от любой группы, а не только от той, к которой он привязан. Возможно ли точно понять, от какой multicast группы получен пакет? Причём, ip-адрес отправителя у этих двух групп может быть одинаковый. Дистрибутив Redhat Enterprise 4.

Заранее благодарен.

anonymous

две опции сокета :
1 IP_ADD_MEMBERSHIP - Join a multicast group
2 IP_DROP_MEMBERSHIP - Leave a multicast group

по идее , нужно передать групповой адрес в inet_aton() и сконкатенировать ее результат с INADDR_ANY (перл:-)

my $mcast_addr = inet_aton('225.1.1.3');
my $local_addr = INADDR_ANY;
my $ip_mreq = $mcast_addr . $local_addr;
my $ip_level = getprotobyname('IP') or die "Can't get protocol: $!";
setsockopt($sock,$ip_level,IP_ADD_MEMBERSHIP,$ip_mreq)
or die "Can't join group: $!";

kto_tama ★★★★★
()
Ответ на: комментарий от kto_tama

Сокеты присоединены к группам, но, так как, у обеих групп порт одинаковый, то пакеты, предназначающиеся первой группе, могут прийти на сокет, присоединённый ко второй группе и наоборот. Вопрос: возможно ли понять, какой группе предназначался каждый пакет, независимо от того, какой сокет его получил?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.