Home
About
Projects
Contact
ReadFileOverNetworkClient.java
package net21;

/**
 * William Smolinski
 * CISS 241
 * Read File Over Network Onto Screen Assignment: This is the client program that will take input from the user about the port and host name
 * for the server and also gather a message which will be for a file that the server will open. The program then sends that message to the
 * specified server and awaits a response. The response will be the file line by line to then be printed to the console.
 */

import java.io.*;
import java.net.*;

public class ReadFileOverNetworkClient 
{
	private int port;
    private InetAddress host;
   
    public ReadFileOverNetworkClient(int portNumber, String hostName)
    {
        try
        {
            port = portNumber;      

            host = InetAddress.getByName(hostName);  
        }
        catch(UnknownHostException u)
        {
            u.printStackTrace();
        }
    }
   
    public void run(String mes)
    {
        try
        {
        	//Setting up the socket
        	Socket client = new Socket(host, port);
        	
        	//Sending the message to the server
        	PrintWriter pw = new PrintWriter(client.getOutputStream(), true);
        	pw.println(mes);
        	
        	//Receiving a message from the server and printing it out
        	BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));
        	
        	String str;
        	while((str = br.readLine()) != null)
        	{
        		System.out.println(str);
        	}
        	
        	client.close();
        }
        catch(IOException ex)
        {
            ex.printStackTrace();
        }
    }
   
    public static void main(String[] args) throws IOException
    {
        String fileName;
        BufferedReader br = new
            BufferedReader(new InputStreamReader(System.in));
        
        //Asks the user for a file name
        System.out.print("Enter a file name:  ");
        fileName = br.readLine();
        
        //Asks the user for a port number and keeps asking until a valid int is submitted
        System.out.print("Enter a port number: ");
        int portNumber = -1;
        while(portNumber == -1)
        {
        	try 
            {
            	portNumber = Integer.parseInt(br.readLine());
    		} 
            catch (NumberFormatException e) 
            {
    			System.out.print("Not a valid port number, try again:");
    		}
        }
        
        //Asks the user for the host name of the server
        System.out.print("Enter the host name: ");
        String hostName = br.readLine();
        
        ReadFileOverNetworkClient c = new ReadFileOverNetworkClient(portNumber, hostName);
        c.run(fileName);  // call run method with string line to send to server
    }
}