![JDukeBox](./img/logoweb.png)
JDukeBox is a collaborative tool which permits the diffusion of multimedia files. Actually, it is a cooperative and distributed jukebox, where users can create and join groups in which they share some resources (audio or video). Each member of a group has then the possibility to modify a playlist associated to the group by adding a desired resource, without caring about who owns it.
The usage of a peer to peer architecture based on JXTA mechanisms makes possible to manage and control the distributed system, whatever the nature of the underlying network is (IPv4, IPv6...). The peers are organized as follows. In each group, one or more peers act as "Rendez-Vous" peers. The main function of such a peer is the discovery of peers which are not directly connected (on a different IP network for example). It permits to these peers to interact with all members of the group.
Any member of the group can dynamically modify the playlist by adding or removing a resource available or enqueued, within all the shared resources in the group. The implementation of the SOCT2 algorithm permits the synchronization of this playlist, thus ensuring the overall coherence of the service (only one diffusion at the same time).
Besides the control plane JXTA, the daemon MJBox takes care of the diffusion of the resources by using IP multicast. The flow is then only sent once, whatever the number of members is, as the network takes care of duplicating the packets in order to join all of them. The source of this stream is always the peer which owns the resource played. The interaction between these two planes, combined to the communications between all peers, permits a sequential multicast diffusion which follows the evolution of the playlist.
![JDukeBox](./img/screenshot.jpg)