在进行Groupsock分析之前先复习下 组播(多播)的知识.
首先组播 是基于 UDP的,所以在后面代码里面会出现:sock(AF_INET,SOCK_DGRAM,0); SOCK_DGARM就是代表是UDP进行通信。
然后组播是对应一个D网段的IP,我们需要加入组播才能向组播的成员发送数据或者接受数据,所以代码中会有setsockopt的调用(当然这个函数不光是针对加入组播的)。 最后需要注意的一点是,我们通讯 是在UDP(TCP)之上的某个端口上进行通讯的,所以我们组播的话必须有个固定的端口用于接受数据,也就是说我们要想组播里的成员发送数据,那么目的端口就是这个端口,而我们要接受组播成员发送的数据也是在这个端口上接受数据。
对组播知识有了了解之后我们再来看看Groupsock的层次,Groupsock是从一个基类派生来的,这个基类是NetInterface,由于是基类,所以主要是一些标识性的属性,在NetInterface里面只有一个 UsageEnvironment类型的变量,很显然是为了错误处理和消息输出用的。
NetInterface有2个子类,一个是DirectedNetInterface,另一个是Socket。
DirectedNetInterface 这个类比较奇怪,首先它有2个纯虚函数,也就是说这个类是抽象类,但是这个抽象类却没有子类,也就是说在live555中 是不可能用到这个DirectedNetInterface类的。
Socket这个抽象类,2个 字段: fSocketNum和fPort,不用说肯定是 socket和 端口号了&