Mega Code Archive

 
Categories / Java / Network Protocol
 

A simple network client that establishes a network connection to a specified port on a specified host, send an optional m

/*  * Copyright (c) 2004 David Flanagan.  All rights reserved.  * This code is from the book Java Examples in a Nutshell, 3nd Edition.  * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.  * You may study, use, and modify it for any non-commercial purpose,  * including teaching and use in open-source projects.  * You may distribute it non-commercially as long as you retain this notice.  * For a commercial use license, or to purchase the book,   * please visit http://www.davidflanagan.com/javaexamples3.  */ //package je3.net; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.SocketTimeoutException; /**  * A simple network client that establishes a network connection to a specified  * port on a specified host, send an optional message across the connection,  * reads the response from the server and exits. A suitable client for simple  * network services like the daytime or finger.  */ public class Connect {   public static void main(String[] args) {     try { // Handle exceptions below       // Get our command-line arguments       String hostname = args[0];       int port = Integer.parseInt(args[1]);       String message = "";       if (args.length > 2)         for (int i = 2; i < args.length; i++)           message += args[i] + " ";       // Create a Socket connected to the specified host and port.       Socket s = new Socket(hostname, port);       // Get the socket output stream and wrap a PrintWriter around it       PrintWriter out = new PrintWriter(s.getOutputStream());       // Sent the specified message through the socket to the server.       out.print(message + "\r\n");       out.flush(); // Send it now.       // Get an input stream from the socket and wrap a BufferedReader       // around it, so we can read lines of text from the server.       BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));       // Before we start reading the server's response tell the socket       // that we don't want to wait more than 3 seconds       s.setSoTimeout(3000);       // Now read lines from the server until the server closes the       // connection (and we get a null return indicating EOF) or until       // the server is silent for 3 seconds.       try {         String line;         while ((line = in.readLine()) != null)           // If we get a line           System.out.println(line); // print it out.       } catch (SocketTimeoutException e) {         // We end up here if readLine() times out.         System.err.println("Timeout; no response from server.");       }       out.close(); // Close the output stream       in.close(); // Close the input stream       s.close(); // Close the socket     } catch (IOException e) { // Handle IO and network exceptions here       System.err.println(e);     } catch (NumberFormatException e) { // Bad port number       System.err.println("You must specify the port as a number");     } catch (ArrayIndexOutOfBoundsException e) { // wrong # of args       System.err.println("Usage: Connect <hostname> <port> message...");     }   } }