出于传输效率的考虑,用到了组播程序。
--------------------------------------------------------------------------------
1 组播简介
--------------------------------------------------------------------------------
IP网络传输方式共分为单播,组播(多播),广播三种。
单播:平时我们最常用的一对一的网络传输方式就是单播;
组播:组播是一对多的传输方式,其中有个组的概念, 发送端将数据向一个组内发送,
网络中的路由器通过底层的IGMP协议自动将数据发送到所有监听这个组的终端。
广播: 和组播有一些相似, 区别是路由器向子网内的每一个终端都投递一份数据包,不论这些终端是否乐于接收该数据包。
相对于极度消耗网络带宽的广播来说(广播只能在内网广播),UDP组播有了很大的优化,只有终端加入到了一个组,
UDP组播的数据才能被他接收到。 UDP组播是采用的无连接数据报方式,所以是不可靠的。也就是数据能不能到达接受端和数据到达的顺序都是不能保证的。但是由于UDP不用保证数据的可靠性,所有数据的传送速度是很快的。
--------------------------------------------------------------------------------
2. IP组播地址
--------------------------------------------------------------------------------
IP组播地址是一组D类IP地址,范围从224.0.0.0 到 239.255.255.255。
其中还有很多地址是为特殊的目的保留的。224.0.0.0到224.0.0.255的地址最好不要用,
因为他们大多是为了特殊的目的而保留的(比如IGMP协议)
--------------------------------------------------------------------------------
3. IGMP协议 (Internet Group Management Protocol)
--------------------------------------------------------------------------------
IGMP是互联网组管理协议。IP组播的基础。在IP协议出现以后为了加入对组播的支持,IGMP产生了。
IGMP所做的实际上就是告诉路由器,在这个路由器所在的子网内有人对发送到某一个组播组的数据感兴趣.
这样当这个组播组的数据到达后,路由器就不会抛弃它,而是把他转送给所有感兴趣的客户。
假如不同子网内的A和B要进行组播通信,那么位于AB之间的所有路由器必须都要支持IGMP协议,否则AB之间就不能进行通信。
--------------------------------------------------------------------------------
4. UDP组播的基本步骤
--------------------------------------------------------------------------------
向组地址发送数据与点播并无差别。
从组地址中接受数据需要将本地地址加入到组。仅此而已
步骤:
建立socket
socket和端口绑定
加入一个组播组
通过sendto / recvfrom进行数据的收发
关闭socket
--------------------------------------------------------------------------------
5. 实例:
goole 或 baidu linux 组播程序
--------------------------------------------------------------------------------