question archive CS550 Programming Assignment 2 (PA#2) A Hierarchical Gnutella-style P2P File Sharing System In programming assignment 1, you implemented a Napster style file-sharing system where a central indexing server plays an important role
Subject:Computer SciencePrice:0 Bought3
CS550 Programming Assignment 2 (PA#2) A Hierarchical Gnutella-style P2P File Sharing System
In programming assignment 1, you implemented a Napster style file-sharing system where a central indexing server plays an important role. In this project, you are going to remove the central component and implement a pure distributed file-sharing system. An example of such a system is the well-known Gnutella network. If you are not familiar with Gnutella, the following links provide some background about the technology. Pay more attention to its architecture and design goals rather than its protocol details, since we are not strictly implementing a full-featured Gnutella client, but a small subset of it
When you have finished implementing the complete assignment as described above, you should submit your solution on blackboard. Each program must work correctly and be detailed in-line documented. You should hand in: 1. Output file: A copy of the output generated by running your program. When it downloads a file, have your program print a message "display file 'foo'" (don't print the actual file contents if they are large). When a leaf-node issues a query (lookup) to the indexing server, having your program print the returned results in a nicely formatted manner. 2. Design Doc: A separate (typed) design document (named design.pdf or design.txt) of approximately 2-4 pages describing the overall program design, , and design tradeoffs considered and made. Also describe possible improvements and extensions to your program (and sketch how they might be made). 3. Source code and program list: All of the source code and a program listing containing in-line documentation. 4. Manual: A detailed manual describing how the program works. The manual should be able to instruct users other than the developer to run the program step by step. The manual should contain at least a test case which will generate the output matching the content of the output file you provided in 1. 5. Verification: A separate description (named test.pdf or test.txt) of the tests you ran on your program to convince yourself that it is indeed correct. Also describe any cases for which your program is known not to work correctly. 6. Performance results. 7. Problem report: if your code does not work or does not work correctly, you should report this. Please put all of the above into one .zip or .tar file, and upload it on blackboard. The name of .zip or .tar should follow this format: Section_LastName_FirstName_PA2.zip