SPRING '04
DUE DATE: May 21rd 2003, 17:00
PROBLEM DESCRIPTION: In this project you will implement a Simple MP3 Server and a simple client using your network programming skills. Your server will consist of a repository of MP3 files and a application which uses Berkeley sockets. Server will accept registration requests from clients. Registered users receive MP3 files from the server according to their user profile. User profile is also defined by the client via appropriate messaging. During initial registration a default user profile - which is downloading all new songs available on server - is assumed. The server can also query the clients and ask for MP3 pieces that do not exist in its own repository. Clients can switch on/off server queries by updating their user profiles.
TECHNICAL ASPECTS: What you will actually do is to implement a simple application layer protocol (ALP). Your implementation will be based on Berkeley Sockets programming. Your ALP design should incorporate Open SSL.(Using plain Berkeley Sockets instead of Open SSL libarary is –15 pt. !) You will decide type and format of messages in your ALP in accordance with the problem description given above.
When implementing the project, main emphasis should be on networking side. You can make simplifying assumptions and design choices when dealing with message database and GUI on client side (A text based GUI will serve our purpose)
FINAL REMARKS: Be careful about the below !
· Use Linux Red Hat OS as your development environment. (Demo will be on a RH 7.3 machine).
· You are supposed to write all the code from scratch. This is not a very complicated project, so do not borrow code from any other source! (i.e. internet, your friends, previous projects). If you happen to “inspire” from other’s code, first understand and digest it and then re-code it with your own talent. You are not even allowed to use any utility or error checking code that is not written by you.
· Simple and neat coding is very important.
· Put comments wherever you see its necessary. Effective commenting will affect your grades.
· There are many open points in the project. You must make your own assumptions and work alone to finish the project. Team work is not allowed in this project.
· You can ask questions and get help from your TA. However you cannot ask or discuss items which must obviously be done by you (e.g. questions of the form “I’ve made such and such assumptions, are they valid ?” are not accepted) There is a deadline for you to consult the TA and it is 14th May 2003.
· We will go the CmpE 322 style. That is you may expect an oral exam accompanying your demo. (REMINDER: A low Oral Exam grade simply means you have copied the project and therefore will be treated accordingly!)
· Options that will affect your grade are as follows:
v Your choice and design of the underlying protocol (30 pt.)
v Using plain Berkeley Sockets instead of Open SSL libarary ( - 15 pt.)
v Your protocol design, no client-server applications allowed (-50 pt.)
v Any language other than C/C++, any library other than Berkeley sockets (-50 pt.)
v Cheating : Straight F as a letter grade(I mean it !)