FileDocCategorySizeDatePackage
QuoteServerThread.javaAPI DocExample2071Tue Dec 12 18:58:32 GMT 2000None

QuoteServerThread

public class QuoteServerThread extends Thread

Fields Summary
protected DatagramSocket
socket
protected BufferedReader
in
protected boolean
moreQuotes
Constructors Summary
public QuoteServerThread()


        
	this("QuoteServerThread");
    
public QuoteServerThread(String name)

        super(name);
        socket = new DatagramSocket(4445);

        try {
            in = new BufferedReader(new FileReader("one-liners.txt"));
        } catch (FileNotFoundException e) {
            System.err.println("Could not open quote file. Serving time instead.");
        }
    
Methods Summary
protected java.lang.StringgetNextQuote()

        String returnValue = null;
        try {
            if ((returnValue = in.readLine()) == null) {
                in.close();
		moreQuotes = false;
                returnValue = "No more quotes. Goodbye.";
            }
        } catch (IOException e) {
            returnValue = "IOException occurred in server.";
        }
        return returnValue;
    
public voidrun()


        while (moreQuotes) {
            try {
                byte[] buf = new byte[256];

                    // receive request
                DatagramPacket packet = new DatagramPacket(buf, buf.length);
                socket.receive(packet);

                    // figure out response
                String dString = null;
                if (in == null)
                    dString = new Date().toString();
                else
                    dString = getNextQuote();
                buf = dString.getBytes();

		    // send the response to the client at "address" and "port"
                InetAddress address = packet.getAddress();
                int port = packet.getPort();
                packet = new DatagramPacket(buf, buf.length, address, port);
                socket.send(packet);
            } catch (IOException e) {
                e.printStackTrace();
		moreQuotes = false;
            }
        }
        socket.close();