/*
* 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 message...");
}
}
}