live555는 아래 링크를 보면 알겠지만 ipv6를 지원할 마음이 없는 것 같다.
http://www.live555.com/funded-projects/live555_ipv6.html
덕분에 고생좀 해서 live555에서 ipv6를 지원 하도록 변경 했다.
주요 변경 포인트는 groupsock의 socket connection부분 이다. (livemedia와 baseEnvironment도 조금 씩 수정 되었음)
AF_INET --> AF_INET6
sockaddr_in --> sockaddr_in6
MAKE_SOCKADDR_IN --> MAKE_SOCKADDR_IN6
#define MAKE_SOCKADDR_IN6(var,adr,prt) /*adr,prt must be in network order*/\
struct sockaddr_in6 var;\
memset(&var, 0, sizeof(var));\
var.sin6_family = AF_INET6;\
var.sin6_flowinfo = 0;\
var.sin6_addr = adr;\
var.sin6_port = htons(prt);\
ipv4와 ipv6를 모두 지원하기 위해서는 rtsp url 정보가 ipv4인지 ipv6인지를 구분 해서 각각의 socket initilaze부분에서 분기를 해서 처리를 했다.
근데 중요한건 이렇게만 한다고 해서 모든 type의 stream을 받을 수 있는 것은 아니다.
지금까지 수정된 코드들은 tcp만 지원하고 udp나 multicast는 지원되지 않는다.
udp와 multicast를 지원하기 위해서 몇 일 정도의 디버깅을 해봤으나 답이 나오지 않는다.
지원을 한다고 해도 live555를 최신버전이나 특정 버전으로 update해야 하는 상황이 왔을 때 ipv6를 위해 수정된 코드들을 모두 다시 지원해 줘야 하는 불상사가 발생하기 때문이다.
그래서 결국은 tcp만 적용 하고 udp와 multicast는 live555가 ipv6를 지원 할 때 까지 무한 대기 하는걸로...
'MS > tip' 카테고리의 다른 글
custom inet_pton (0) | 2014.05.27 |
---|---|
Lock-Free Queue (0) | 2012.07.20 |
vlc로 rtsp streaming 하기 (1) | 2010.11.08 |
[TIP] IP로 Hostname 찾기 (0) | 2010.07.13 |
[TIP] Visual Studio 찾기 오동작 ("찾을 파일이 없습니다.찾기가 중지되었습니다.") (3) | 2010.07.09 |