El lado cliente de una aplicación TCP/IP descansa en la clase
Socket. De nuevo, mucho del trabajo necesario para establecer la conexión
lo ha realizado la clase Socket.
import java.io.*;
import java.net.*;
public class ClientTest {
public static void pausa(){
try {
Thread.sleep(3000);
} catch (Exception ignored) {}
}
public static void main (String args[])
{
String welcome, response;
Client client;
BufferedReader reader;
PrintWriter writer;
client = new Client (args[0], 8001); //la
clase Client Implementa el socket cliente al que se le pasa el argumento
0 que contendrá la dirección o nombre del servidor
try {
//creamos los canales de entrada/salida para comunicarnos
con el servidor
reader = new BufferedReader (new
InputStreamReader (client.in));
writer = new PrintWriter (new
OutputStreamWriter (client.out), true);
//leemos la bienvenida que nos da el servidor
welcome = reader.readLine();
pausa();
System.out.println ("Mensaje procedente del
servidor: '"+ welcome +"'");
//para ver el funcionamiento, enviamos los comandos
System.out.println ("Enviando comando NAME");
writer.println("NAME");
response = reader.readLine();
System.out.println ("Respuesta del servidor:
'"+ response +"'");
//pausa
pausa();
System.out.println ("Enviando comando HELP");
writer.println ("HELP");
response = reader.readLine();
System.out.println ("Respuesta del servidor:
'"+ response +"'");
pausa();
System.out.println ("Enviando comando DATE");
writer.println("DATE");
response = reader.readLine();
System.out.println ("Respuesta del servidor:
'"+ response +"'");
pausa();
//el siguiente comando no es entendido por el
protocolo implementado por el servidor//como
vemos en la respuesta que nos devuelve
System.out.println ("Enviando comando xl");
writer.println("xl");
response = reader.readLine();
System.out.println ("Respuesta del servidor:
'"+ response +"'");
pausa();
System.out.println ("Enviando comando QUIT");
writer.println("QUIT");
} catch (IOException e) {
System.out.println ("IOException en client.in.readln()");
System.out.println(e);
}
try {
Thread.sleep(2000);
} catch (Exception ignored) {}
}
}
//-------------------------------------------------------------------
class Client {
// establece los canales de entrada y de salida
a disposicion de las clases de usuario
public InputStream in;
public OutputStream out;
// El socket cliente
private Socket
client;
public Client (String host, int port)
{
try {
client = new Socket
(host, port);
System.out.println ("Datos del socket: "
+ client);
in = client.getInputStream();
out= client.getOutputStream();
} catch (IOException e) {
System.out.println("IOExc : "
+ e);
}
}
}
|
El siguiente código nos muestra un ejemplo de diálogo
entre el cliente y el servidor.
En la ejecución del cliente, deberá pasarle como parámetro
el nombre o dirección del servidor. Ejemplo:
Java Clientest localhost
En este ejemplo, el cliente establecerá la comunicación
en el puerto 8001 y en el ordenador local, ya que como parámetro
se le ha pasado localhost.
|