最近在做流媒体服务器。创建组播时:
struct in_addr dest; dest.s_addr = chooseRandomIPv4SSMAddress(env);
const Port rtpPortVideo(videoRTPPortNum);
const Port rtcpPortVideo(videoRTPPortNum+1);
rtpGroupsockVideo = new Groupsock(env, dest, rtpPortVideo, ttl);
rtcpGroupsockVideo = new Groupsock(env, dest, rtcpPortVideo, ttl);
rtpGroupsockVideo->multicastSendOnly();
rtcpGroupsockVideo->multicastSendOnly();
在Groupsock构造时调用socketJoinGroup,动态IP发现无论如何都无法加入组播中。opRTSP一直无法获得数据,但VLC又可以播放。后来经过查看VLC源码,发现VLC使用winsock2.h(ws2_32.lib),而live555编译时没有打开编译winsock2.h,一直使用winsock1.0版的。所以一直不成功。所以在编译时需要加上WINNT选项就可以了。
希望能给碰到这个问题的朋友有所帮助。