CDD  Logo
WEB Programming: Gnutella search

The challenge : Gnutella is a distributed search database with internal communication protocol.
There's a software product, written in PHP, implementing CnutellaÒs client and providing Web-interface to fulfill the search. ItÒs needed to modify the existing code to work with multiple Gnutella servers at once. That would increase searching performance.

Enviroment :
OS: Linux 6.0
Programming language: Perl 5.005
WebServer: Apache
RDBMS: MySQL

Solution : After problem analysis and consideration the possible solutions, the decision was made not to modify or partially re-engineer the exiting code by the following reasons:

  1. There is no thread and fork facilities in PHP, and IPC facilities are very poor implemented.
  2. Communication protocol of interaction with Gnutella search server implemented incorrectly in the existing code.
  3. The existing code is very poor designed.

An option of full implementation of the product in Perl from scratch by our developers was proposed and accepted.

Terms of realization:

Analysis and design 2 hours 2 developers
Communication with the customer, agreeing product specification 4 hours manager

Task:
Implement a multithread Cnutella search client.
Implement a Web interface to fulfill search and provide IPC (inter process communication) with Gnutella search client.

Enviroment :

OS: Linux 6.0
Programming language: Perl 5.005
WebServer: Apache
RDBMS: MySQL

Solution: After studying the interchange protocol of Gnutella search sever and client, search client was implemented. The client receives input in form of search request and search timeout. Then it opens several parallel sessions with different Gnutella servers. When search timeout is exceeded, the client closes all sessions and prepares the responses (responses are sorted by servers, duplicate answers are deleted).

A Web interface was implemented to pass the search request to client and fulfil formatted output of the responses to html form. Web interface is implemented using "template" technology, that gave the customer the ability of full change of product design without our help.

 

Terms of realization:

Analysis and design 4 hours 2 developers
Studying and implementation of Gnutella protocol 4 hours 2 developers
Implementation of multithread search client 5 hours 2 developers
Implementation of WWW interface 1 hours 2 developers
Implementation of storage of priority list of Gnutella servers and last users' requests log database 3 hours 1 developers
Setup and turnkey 2 hours 1 developers
Some tweak and support 2 hours 1 developers
Communication with the customer, agreeing product specification 4 hours manager

 

Previous projectClose WindowNext project