Rev 224 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*******************************************************************************
* File: P3_Client.java
* Author: Ira W. Snyder (devel@irasnyder.com)
* License: GNU General Public License v2
* Class: CS380 - Computer Networking
*
* Assignment: Project #3
* Date Last Modified: 2006-02-15
*
* Purpose: Implement a client that will request an IP Address from the
* P3_Server running on TCP Port 1337. Once it gets a lease, it waits for
* the server to tell it that the lease has expired.
******************************************************************************/
import java.net.*;
import java.io.*;
public class P3_Client
{
/* Instance Variables */
private static IPAddr ip;
private static String hw;
private static final String hostName = "localhost";
private static final int portNumber = 1337;
/**
* Method: main
* Purpose: The main() function, which handles requesting an IP Address,
* and then closes when the lease expires.
*/
public static void main (String[] args) throws Exception
{
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
BufferedReader kbd = null;
String s = new String();
boolean running = true;
// Set up the socket, and input and output streams
try
{
socket = new Socket (hostName, portNumber);
out = new PrintWriter (socket.getOutputStream(), true);
in = new BufferedReader (new InputStreamReader (
socket.getInputStream()));
kbd = new BufferedReader (new InputStreamReader (System.in));
}
catch (UnknownHostException e)
{
System.err.printf ("Can't resolve hostname: %s\n", hostName);
System.exit (1);
}
catch (IOException e)
{
System.err.printf ("Couldn't get I/O for the connection to: %s\n", hostName);
System.err.printf ("Is the P3_Server running?\n");
System.exit (2);
}
// Ask the user for the Hardware Address
System.out.print ("Please type your Hardware Address: ");
hw = kbd.readLine();
// Send Hardware Address to the server
out.printf ("req IP %s\n", hw);
// Print every message sent back from the server, until the lease expires
while (running)
{
// Get messages from the server
s = in.readLine();
System.out.println (s);
// Stop when the lease expires
if (s.equals("IP Lease Time Expired"))
running = false;
}
// Tell the user that we are quitting
System.out.println ("Client Exiting");
// Clean up all the sockets
out.close();
in.close();
socket.close();
}
}