Arbuzinside / Simpella

A stripped dwn version of GNUTella for a course project

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simpella

A stripped dwn version of GNUTella for a Netoworks Course project

Task breakdown

Phase 1:

Iteration 0: Setup repo -- Done

Iteration 1: Implement open

  • Implement a TCP server listening on a particular port
  • open ip:port
  • Use just IP for now. Establish a TCP connection
  • Send Simpella header - SIMPELLA/0.6 \n\r
  • Server to respond with 200 after accepting connection. 503 if there are 3 connections already. Maintain the connections n a data structure.

Iteration 2: Implement Ping

  • Implement the 23 byte header
  • Initiate Ping message to all connected neighbours

Iteration 3: Forward Ping message

  • Implement routing table containing the last 160 ping messages and their origins
  • Use array for simplicity
  • Forward the ping messaage to the nighbours if not already done.

Iteration 4: Implement Pong

  • Implment pong response message
  • Send pong to the sender of ping

Iteration 5: Forward Pong

  • Implement routing table based forwarding of pong messages
  • Original sender of ping should stop the flooding process of pong
  • The data got through pong should be stored in a data structure

Iteration 6: Implement GET command for HTTP

  • Create GET headers in client
  • Create server for file downloads
  • Server should repond for GET message
  • Appropriate error code should be sent back
  • Use predefined IP and port for testing.
  • Use predefined file index and file name or testing

Iteration 7: Implement query

  • Form header at client and send
  • At the server, process the header to find if it is a query message

Iteration 8: Implement the file list and the query hit

  • Scan the files shared and store in a data structure
  • Use predefined directory to scan
  • Form the query hit message and repond

Iteration 9: Implement share and scan commands

  • Maitain the directory that is shared and the files present in it in a table
  • The directory should be read from CLI
  • Table should be updated on the scan command

Iteration 10: Implement the find command

  • file command shall be wrapper around the query message.
  • Response to query, query-hit shall be sent. Query-hit packet should be parsed and displayed to the user

End of Phase 1

Phase 2: Monitor, Info, other parts left out in Phase 1

Phase 3: Clean up, error handling, bug fixing

About

A stripped dwn version of GNUTella for a course project