Как я могу присоединиться к группе многоадресных потоков mpeg с адресом udp://@224.1.50.15:1234
? То, чем я хочу управлять, - это просто установить соединение с потоковым сервером, чтобы сервер узнал, что я заинтересован в этой многоадресной группе, чтобы заставить сервер отправлять мне потоковые пакеты в течение определенного периода времени.
Например: я не получаю никаких пакетов из этой многоадресной группы, пока не установлю соединение с группой с помощью VLC Player. Даже после закрытия VLC Player я продолжаю получать пакеты от группы в течение короткого периода времени. Что я пытаюсь сделать, так это получать пакеты без помощи VLC Player или любого другого стороннего приложения.
Как я могу установить соединение с этой группой для вышеуказанной цели. Если это вообще возможно?
P.S: У меня установлено 4 сетевых интерфейса.
Благодарю вас!
Как рекомендует Zaboj Campula в его ответе на этой странице; я изменил код, как показано ниже. Что дает мне ошибку 10093.
struct ip_mreq {
struct in_addr imr_multiaddr; /* IP multicast address of group */
struct in_addr imr_interface; /* local IP address of interface */
};
SOCKET s;
SOCKADDR_IN localif;
struct ip_mreq mreq;
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
localif.sin_family = AF_INET;
localif.sin_port = htons(1234);
localif.sin_addr.s_addr = INADDR_ANY;
bind(s, (SOCKADDR *)&localif, sizeof(localif));
mreq.imr_interface.s_addr = INADDR_ANY; //Writing here my local ip didn't change the result.
mreq.imr_multiaddr.s_addr = inet_addr("224.1.50.15");
int rc = NO_ERROR;
s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
// Join the group
rc = setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&mreq, sizeof(mreq));
if (rc == SOCKET_ERROR)
{
printf("JoinMulticastGroup: setsockopt failed with error code %d\n", WSAGetLastError());
}
else
{
printf("Joined group: ");
//PrintAddress(group->ai_addr, group->ai_addrlen);
printf("\n");
}
libvlc_media_new_location
изlibvlc.lib
. Что, на мой взгляд, является излишним для этой цели. - person swartkatt   schedule 21.12.2016