Find Jobs
Hire Freelancers

Peer-to-Peer Publish-Subscribe System

$250-750 USD

Closed
Posted over 13 years ago

$250-750 USD

Paid on delivery
To implement a publish-subscribe (Pub-Sub) system on top of a peer-to-peer (P2P) file sharing system. The goals of project are: to understand how to design and implement layered Internet protocols, learn to develop complex distributed applications as multi-threaded programs that communicate using the socket API. The implementation will be done in three phases. Detailed information/requirements will be provided for each phase. Pub-Sub systems are used for asynchronous communication between producers of information (i.e., publishers) and consumers of information (i.e., subscribers). These systems allow entities that do not know each other to exchange information based on the type of information; data is exchanged when publishers produce data of the type desired by subscribers. Additionally, the communicating entities do not have to be on-line simultaneously because the communication is managed by a centralized component (broker). Traditionally, the publishers store, at the broker, the data they produce together with meta-data describing its type. Subscribers, on the other hand, store at the broker their interests (i.e., types of data). The broker matches the subscribers’ interests with the published data. 3 phases: Phase 1: Phase 1 Description: In this phase, you are required to implement a multi-threaded peer program that acts as both client and server. The implementation consists of the following steps: Write two programs, a TCP client and an iterative TCP server (i.e., very similar to the ones provided in the lecture slides). The server starts by reading from the command line a port number on which it listens for client requests. The client starts by taking two parameters from the command line: the IP address and port number of the server. Then, the client enters an infinite loop and waits for user commands. The user can enter three commands: o publish file_type file_name o search file_type o retrieve file_name The file_type is a string specified by the user (e.g., music, politics). The file_name is the name of a local file in publish or the name of a remote file in retrieve (located at the server). In response to a publish command, the client reads the file from the disk and sends it to the server along with the string specifying its type; the server stores the file on its disk and creates or adds a new entry in a data structure that keeps track of the files and types it has stored. In response to a search command, the client asks the server what files of that type it has. The server returns the names of those files, if any. In response to a retrieve command, the client asks the server to download the specified file; the client stores the downloaded file on its disk. The TCP connections between the client and the server are transient (they are created and terminated for each command). Turn the iterative server built above into a multi-threaded server. Each time a new client request is received at the server, a new thread is created to process the request and send back the appropriate response. Test the user commands from several clients in parallel to make sure the server can deal with concurrent requests. Create a program that incorporates both the multi-threaded server and the client into a “peer node”. Instantiate several peers and test the user commands at each of them. Phase 2 and phase 3 after completion of phase 1
Project ID: 803016

About the project

5 proposals
Remote project
Active 14 yrs ago

Looking to make some money?

Benefits of bidding on Freelancer

Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs
5 freelancers are bidding on average $414 USD for this job
User Avatar
I have more than 7 years of experience in java/j2ee technologies, I have very good hands on threading and data manipulating architectures. I can get you a stable, quality and high performing code... Contact me for more details.
$600 USD in 5 days
4.8 (2 reviews)
3.8
3.8
User Avatar
Hello, I am a Sun certified professional having 6.5 years of experience in Java and J2EE technologies. Please view my profile for the list of projects that I have done and the skills that I posses. I can do the work according to your requirements. Ashwin
$400 USD in 10 days
0.0 (0 reviews)
0.0
0.0
User Avatar
pls see the pmb...
$320 USD in 14 days
0.0 (4 reviews)
0.0
0.0
User Avatar
Hi. I've done a project similar to this one before. Please check PM for further details.
$500 USD in 7 days
0.0 (0 reviews)
0.0
0.0
User Avatar
Java developer
$250 USD in 6 days
0.0 (0 reviews)
0.0
0.0

About the client

Flag of UNITED STATES
Edison, United States
0.0
0
Member since Sep 22, 2010

Client Verification

Thanks! We’ve emailed you a link to claim your free credit.
Something went wrong while sending your email. Please try again.
Registered Users Total Jobs Posted
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Loading preview
Permission granted for Geolocation.
Your login session has expired and you have been logged out. Please log in again.