Digital Media Sharing using PeerShare

Sponsor Ling Liu / Sungkeun Park
{lingliu, mungooni}
216 / 226D CCB
Area Systems and Databases


Peer-to-peer is widely accepted as an infrastructure for efficiently sharing and retrieving information on the web among users. Users issue queries for files with keywords that are likely to be a part of the file names. However, there are occasions when it is difficult to search files of interest merely by looking at their names. Users may wish to issue queries based on metadata or the content of the files of their interest. As a matter of fact, some peer-to-peer applications allow users to issue queries on the metadata of the files(e.g. ID3 tag of mp3 files), or the content of document files.

To this purpose, one of the projects conducted by DISL group, PeerShare [2], incorporated advanced search feature for retrieving BibTeX entries into a peer-to-peer application called Phex [1], which uses Gnutella protocol. The challenge of this project was to efficiently index the content of BibTeX entries so that scanning through the content of the entries was quick enough to send back prompt responses when queries have been received.

The goal of this project is for you to define the type of digital media and add content-specific search features on top of Phex. Handling photo files can be a suggestion. Photo files' names tend to have no meaningful relationship with the content of the photos. You may add tag features to the photos [3] and enable users to issue queries based on this metadata information.

If there are other types of files for which you may want to implement search features, you are welcome to work on them.

After finishing this phase, you can extend this project to employ access control features. Even though peer-to-peer infrastructure is an efficient way to share information among users, some of the information may be sensitive and should be available to a limited number of users. Specific files may be shared among certain users, or a group of users may have (a hierarchy of) sharing agreement in general. You may suggest any novel ideas and possibly implement them to your existing implementation.

Background: Java programming skill is required as you will be adding features to a Gnutella-type application called Phex which is written in Java.


  1. A brief report describing your efforts.
  2. A tar-ball of your code.


  1. Phex
  2. PeerShare
  3. Adobe Photoshop Album

Evaluation: You will be graded on the quality of your report and implementation.