您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于IP Multicast的分布式音视频接几和共享的监控系统的传输和实现

时间:2007-1-20栏目:电子通信论文

播依赖一个特殊的地址组——“移播址”,即D类地址。范围在224.0.0.0-239.255.255.255之间(其中224.0.0.0-224.0.0.255是被保留的地址),D类地址是动态分配和恢复的瞬态地址。组播地址只能作为信宿地址使用,而不能出现在任何信源地址中。每一个组播组对应于动态分配 的一个D类地址。组播的特点:组播组的成员是动态的,主机可以任何时间加入或离开组播组,主机组中的成员在位置上和数量 旧没有限制的。

2.2 Windows下,IP组播的Winsock2实现

Window

s环境下组播通信是基于WindowsSocket的。Windows Socket提供两种不同IP组播的实现方法:Windows Socket提供两种不同的IP组播的实现方法:Winsock1与Winsock2。在Windows2000平台实现VC++6.0开发工具,在本系统中实现了基于Winsock2的组播通信编程。

发送端(前端、客户端)实现步骤:

(1)加载Winsock2库,完成Winsock2的初始化:

WSAStarup(MAKEWORD(2,2),&wsaData);(2)建立本地套接字(UDP):

m_socket=WSASocke(AF_INET,SOCK_DGRAM,IPPROTO_UDP,NULL,0,WSA_FLAG_MULTIPOINT_C_LEAF|
WSA_FLAG_MULTIPOINT_D_LEAF);

//组播通信具有两个层面的重要特征:控制层面和数据层面。控制层面决定一个多播组建立通信的方式,数据层面决定通信成员间数据传输的方式。每一个层面有两种形式,一种是“有限的”,另一种是“无根的”;数据报IP组播在两个层面上都是“无根”的。任一用户发送的数据都将被传送到组中所有其它成员。最后一个参数表明新创建的套接字在控制层面与数据层面都是“无根的”。

图2

    可以通过setsocket函数设置套接字的属性,如地址重用,缓冲区是接收还是发送。

M_localAddr.sin_family = AF_INET;

M_localAddr.sin_port=m_iPort;//本地端口号

M_localAddr..sin _addr.S_un.S_addr=m_uLocalIP;//本地IP地址;

(3)绑定(将新创建的套字节与本地插口地址进行绑定):

bind(m_socket,(PSOCKADDR)&(m_localAddr),sizeof(m_localAddr);

(4)设置生存时间(即数据包最多允许路由多少个网段):

WSAIoctl(m_socket,SIO_MULTICAST_SCOPE,//设置数据报生存时间;

&iMcastTTL,//生存时间大小;

sizeof(iMcastTTL),NULL,0,&cbRet,NULL,NULL);

(5)配置Loopback,以决定组播数据帧是否回送:

int bLoopback=FALSE;

WSAIoct(m_socket,SIO_MULTIPOINT_LOOPBACK,//允许或禁止组播数据帧回送;

&bLoopback,sizeof(bLoopback),NULL,0,&cbRet,NULL,NULL);

(6)收发数据:

在发送方(前端

上一页  [1] [2] [3] [4] 下一页

下页更精彩:1 2 3 4 下一页