Write a program called Spserver, which takes as a command-line parameter a port on which to listen for incoming requests. If the user does not enter a port number or if you are unable to listen on the port that the user species, you should print a message and exit. Otherwise, read a word from the client, check to see if the word is in the dictionary (which is attached). If the word is in the dictionary, send back the word and the text OK. If not, send back the word and text NOT OK. Leave the socket open and continue reading words until the client is finished (i.e. when readLine returns null or if you get an exception when trying to read from the socket). Then close the socket and wait for another client's connection. Your spell check server does not have to be very efficient. When a client sends you a request for a word, open up the dictionary file, read each line of the file. If the line you've read from the dictionary file matches the word that you're trying to check, close the file and return OK to the client. If you read through the entire file and you don't find a match, then the word isn't in the dictionary: close the file and return NOT OK.
Allow the server to handle more than one client at a time by making it multithreaded. The server creates a new thread to handle each client.
Spclient prompts the user for the hostname and port of a spell-check server. It then prompts the user for the name of a file on the local machine to spell check. The program opens up the file, and reads it word-by-word, sending each word to the spell check server. The server will either reply by sending back the word and the text OK, or the word and the text NOT OK. The client prints the results to the screen, closes the socket, and closes the file. There are many ways to write this, but you'll probably use the readLine( ) method of the BufferedReader class to read a line at a time from the file. Each line of text that you'll read will likely have several words in it, but our spell-check protocol requires that you send one word at a time to the server. One problem that you'll have to solve is how to break up the line of text into separate words. Again, there are many ways of doing this, but you might find the StringTokenizer class helpful.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).