SPRING
'03
DUE
DATE: May 23rd
2003, 17:00
PROBLEM DESCRIPTION: In this project you will implement an Electronic Message Board (EMB) using your network programming skills. Any user who is registered to an EMB server can leave a message and read messages left by other registered users. Users cannot specify a destination user for their messages – i.e. once a message is left on EMB, everybody can read it. Anyone can register for the EMB server if his or her IP address belongs to a certain range. EMB discards registration requests from IP addresses out of range. During registration users supply a username and password. IP range-check only occurs during initial registration and not during routine operations. Users can only retrieve new messages – i.e. that they have not seen before. There will be a upper limit on the time that a message survives on the system. After this limit, messages are automatically deleted even if there exist users who have not read them yet. Each message left on the system is automatically time stamped by EMB server and this time stamp is passed to readers as well.
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 should be operational on both TCP and UDP transport layers. 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 16th 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
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 !)