Я создаю небольшое приложение-отправитель и получатель, которое передает его имя всем другим приложениям в группе многоадресной передачи, а также получает имена других приложений.Возможно ли получить список всех адресов sockaddr_in для каждого сокета в группе многоадресной передачи
Я думаю, что отправка части делается сейчас, как показано ниже:
if (sendto(sock, message, sizeof(message), 0, (struct sockaddr *) &receiver_addr, sizeof(receiver_addr)) < 0) {
perror("sendto");
exit(1);
}
receiver_addr имеет свой IP-адрес, установленный в IP-адрес многоадресной группы, поэтому я уверен, что каждое гнездо в группа получила сообщение. Но теперь я хочу сохранить полученное сообщение из каждого сокета в группе многоадресной передачи в массив. Пример кода, я видел использует следующий код:
if (recvfrom(sock, buf, BUFLEN, 0, (struct sockaddr *) &sender_addr, &senderlen) < 0)
{
perror("recvfrom");
exit(1);
}
На этот раз sender_addr переменная является адрес порта, из которого данные пришли. Но это только получает информацию, отправленную единственным хостом с адресом sender_addr. Я хочу получить список всех адресов портов внутри группы многоадресной рассылки, чтобы я мог запустить цикл метода recvfrom, но изменил значение receiver_addr на адрес каждого из сокетов в группе.
Есть ли другой подход, который я могу предпринять для сбора данных из всех сокетов в группе многоадресной рассылки. – user217339
Только получив их, чтобы отправить вам что-нибудь, например. как рукопожатие с подписью. – EJP