Grading
Criteria Version 0.9 for CSE
489/589 Programming Project # 1
100 points total
- 5 points:
your program compiles without errors [warnings are OK, but not
recommended], produces a single pingpong
executable on both Linux and SunOS; if you produce a client and a
server, no point will be
given for the entire project. Moreover, pingpong
handles user's input graciously: it should report an error if the input
lacks one
parameter and stuff like that. Don't need ot be too careful, but don't
crash if
only the TCP port is typed.
- 5 points:
you write a compilation instruction, along with you (and your
partner's) name and person number in a README file, placed in the
directory. We would very much prefer if your compilation instruction is
a simple make. Please submit only one copy per group.
- 5
points:
After pingpong
is run (and nothing else is
typed yet), there actually are two sockets created, one UDP, and one
listening TCP. We can check
this using netstat
- 5 points:
the info
command works correctly, the UDP/TCP
ports match the user's inputs, the PID and hostname are correct
- 10
points:
the connect
command works correctly,
including
connecting to
oneself! It also handles
user's input graciously. Moreover, it should
report
error if connect()
fails for some reason
(invalid IP address,
connection refused, etc.). The easy way to do
this is just to add perror("Connect:
");
somewhere to report
the error.
- 5
points:
pingpong
should
refuse to connect if MAX_NO_CONNS
has been reached.
- 5 points:
The disconnect
command works
correctly, and handles input graciously. If user wants to
disconnect an invalid connection ID, tell the user so, don't exit on
them. When one end of a connection is disconnected, the other end must
close the corresonding socket and the show
command must reflect this
change.
- 10
points:
The show
command works correctly.
- 20
points:
The send
command works correctly, and
handles input graciously. If user wants to send to an invalid
connection ID, tell the user so, don't exit on them. If the message is
missing, say so, don't send an empty message to the other end.
- 5
points:
The quit
command works correctly.
- 10
points:
your program uses select()
for
I/O multiplexing, no multiprocessing, no multithreading are used.
- 10 points:
your program works correclty when instances of it are run on Linux
machines and other instances are run on SunOS machines simultaneously
- 5 points:
your program correctly works with mine