This implementation of BitTorrent project follows the message structures of the BitTorrent protocol. Without the help of a tracker, a leecher can specify the ipAddress and port number of a seeder and download the required file. An instance of this program acts both as a leecher and a seeder simultaneously with a maximum of five connections at the same time. Both the seeder and leecher are required to have a torrent file which defines different aspects of the file like, size of the file, name of the file, piece length, hash of each piece etc., Using this torrent file a seeder will be able to upload the file to any leecher upon verifying that the leecher belongs to the same swarm. Each step of the download is explained in detail in the following sections.