In this task, you are to develop programming skills of peer via a particular application - Peer-to-Peer Overlay and File Sharing. Among many Peer-to-Peer (P2P) applications, file sharing is a typical application to share available files across all peers of an overlay. In this task, you will need to upgrade a client and a server into a peer. The peers are to form an overlay by IP multicast and the files of a peer can be shared by any other peers. When a peer needs a file, it will multicast the file name to the peer overlay and the peer that has the file will upload the file to the requester peer. To search for a file, a UDP datagram via IP multicast is used. Once the file is found, upload/download of the file is to use TCP streaming to fit for any possible type and length of the file.