6.0 Updates:
  1. 2023-03-25: Many updates. Please post typo/grammar alerts on the D2L forums

Multithreaded Joke Server and Client—Checklist


Refer to Checklist Instructions as needed.

Required, precisely named submission files, NO subdirectories, NO packages:

  • JokeServer.java.txt ←Copied verbatim from JokeServer.java / Contains code for the JokeServer, JokeClient and JokeClientAdmin classes (correctly named) and also contains JokeLog.txt and Joke-postings.txt inserted as Java comments at the bottom of the file.
  • Joke-checklist.html (this file)
Change "No" to "Yes" as you complete the tasks:

Task Complete?
ADMINISTRATION
[Put your name here] No
I understand that making false claims on this checklist is an academic integrity violation. No
Except for the ColorServer code I have not copied any other Java source code for this assignment. (No Inet code is allowed!) No
Academic Integrity quiz completed with perfect score? (Required before assignments can be graded for credit.) No
<>
My code is compatible with the version of Java required by this course No
Included the required full Header Information in my Java file? No
Saved THIS file in plain-text HTML format, and viewed it in a browser to check the appearance? No
All files correctly named with no subdirectories and no packages? No
Copied my completed and compiling JokeServer.java file to JokeServer.java.txt and submitted the .txt version to D2L? No
Checked to see that my JokeServer.java.txt file correctly produced a TII report? No
Verified that the TII overlap percentage is beneath the maximum allowed? [We will not grade submissions over the TII limit for credit.] No
Downloaded my own JokeServer.java.txt file submission from D2L, renamed it to JokeServer.java and checked that it still compiles and runs? STRONGLY RECOMMENDED. No
<>
JOKESERVER
.
Partial Credit section one
JokeServer compiles and produces the JokeServer, JokeClient and JokeClientAdmin classes? No
JokeServer, JokeClient and JokeClientAdmin all run as separate processes from the command line? No
JokeServer uses Java serialization and object marshalling as in the ColorServer (required) No
JokeClient retrieves at least one joke from the JokeServer No
Jokes are retrieved in sets of four, then the cycle is repeated endlessly No
Can simply press <ENTER> on the JokeClient console to get the next response No
All of the correct port numbers are used throughout No
The username (e.g. "Joseph") is displayed on the Server console every time a JokeClient connects. No
I have used clean, inoffensive jokes and proverbs throughout No
I removed Elliott's comments and added my own extensive comments (your ColorServer comments may be repeated) No
I captured console output from my JokeServer, JokeClient and JokeClientAdmin processes (simple copy and paste recommended!) showing my running system and placed all that output in a file named JokeLog.txt. I then inserted JokeLog.txt into the bottom of my JokeServer.java file as Java comments. No
I have made two or more scholarly postings in the JokeServer thread on the D2L forums, and inserted them at the bottom of my JokeServer.java file as Java comments. (Easy!) No
.
Partial Credit section two
JokeClientAdmin compiles and runs No
Can start JokeServer[s], JokeClient[s], and JokeClientAdmin in any order No
Asynchronously spawned Admin Looper simultaneously listens for Admin connections No
JokeAdminClient correctly toggles the JokeServer between Joke and Proverb modes No
Can simply press <ENTER> on the JokeClientAdmin console to toggle the JokeServer mode No
The current mode is displayed on the JokeClientAdmin and JokeServer consoles after a mode toggle No
I have handled the significant design problem such that the ModeWorkers and JokeWorkers communicate: the Admin Client changes the mode, and the JokeWorker knows about it. No
Jokes and Proverbs are correctly labeled JA, JB, JC, JD, PA, PB, PC, PD. No
The user's USERNAME is inserted into the jokes and proverbs. No
.
Partial Credit section three
JokeServer accepts multiple JokeClient connections without interference. No
Maintains CONVERSATION STATE for each client so that a complete set of jokes/proverbs is seen before the cycle begins again, without repeating any jokes or proverbs within the cycle. No
Maintains CONVERSATION STATE for each client even when jokes and proverbs are interleaved. (Be careful that you understand this statement!) No
I have tested my JokeServer with this many simultaneously active JokeClients 0
.
Partial Credit section four
Jokes and Proverbs are randomized when each new cycle begins No
Can start and stop JokeClientAdmin at any time No
Can run JokeServer and JokeClient without JokeClientAdmin No
I believe I have handled command line arguments correctly so my JokeClient and JokeClientAdmin can connect to the JokeServer over the Internet from different machines, possibly located anywhere on Earth. This is your opinion since we do not require that you test this feature. No
I have tested my JokeServer system over the Internet or my home/office Intranet so that it runs on mulitple machines using IP addresses other than those for localhost. (Not required) No
.
.
.
MULTIPLE JOKESERVERS (Ten percent of grade)
Implemented Secondary JokeServer No
Primary and Secondary server modes are completely independent of one another in all ways No
The JokeClientAdmin sets the modes for both Primary and Secondary servers No
Informs (JokeClient) user of current server after switch No
Displays <S2> for all secondary server messages No
All arguments to clients and servers are handled correctly for Multiple JokeServers No
Correctly maintains CONVERSATION STATE WITH EACH SERVER—independently of one another—for each JokeClient. Restated: A conversation the Primary JokeServer is maintaining with a JokeClient, is completely independent of the conversation the Secondary JokeServer is having with that same client. (Be careful that you understand this statement!) No
Correctly maintains CONVERSATION STATE WITH EACH SERVER—independently of one another—for each JokeClient, even when jokes and proverbs are interleaved. No
.
BRAGGING RIGHTS BELOW—WE LOVE THESE! Post on the forums.
.
JokeClientAdmin shuts down the server[s]—Example 1 No
Writes and restores state from disk to restore the client conversation after the JokeServer or JokeClient are shut down and re-started—Example 2 No
Wrote thread-safe code—Example 3 No
[Fill in YOUR OWN custom extra features, one line per feature] Yes

Optional Comments:

[Communicate with us about this program here if necessary.]

Explain Maybe entries here also.