주소가 udp://@224.1.50.15:1234
인 멀티 캐스트 MPEG 스트림 그룹에 어떻게 참여할 수 있습니까? 내가 관리하고 싶은 것은 단지 스트림 서버와 연결하여 서버가 내가이 멀티 캐스트 그룹에 흥미가 있다는 사실을 알게하여 서버가 일정 시간 동안 스트림 패킷을 보내도록하는 것이다.C++ 멀티 캐스트 MPEG 스트림에 어떻게 참여할 수 있습니까?
예 : VLC Player로 그룹에 연결할 때까지이 멀티 캐스트 그룹에서 패킷을받지 못합니다. VLC 플레이어를 닫은 후에도 짧은 기간 동안 그룹의 패킷을 계속 수신합니다. 내가 뭘 하려는지 VLC 플레이어 또는 다른 제 3 자 응용 프로그램의 도움없이 패킷을받을 것입니다.
위의 목적을 위해이 그룹과 어떻게 연결해야합니까? 심지어 가능하다면?
P .: 네트워크 인터페이스가 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.lib''에서'libvlc_media_new_location' 기능을 사용하기로 결정. 제 의견으로는 과대 평가입니다. – swartkatt