lunes, 28 de julio de 2008

El uso de los socket

DJ_bryan [jbpineda@estudiantes.uci.cu]

El objetivo de este artículo es introducirlo a la programación orientada a las redes con el uso de los socket, en especifico trataremos dicho tema orientado al lenguaje de programación de alto nivel JAVA, que consta de una muy cómoda implementación de la clase socket además de grandes facilidades para su manejo.

Las clases de java que implementan los socket son:
java.net.Socket
java.net.SocketServer

java.net.Socket nos permite establecer un socker en el cliente y establecer una conexión con un socket servidor.
java.net.SocketServer sirve para establecer un socket en un servidor y escuchar las peticiones de soket clientes.

Trabajar con un socket cliente requiere varios pasos:
1- Abrir el socket utilizando uno de sus constructores, estableciendo la ip y puerto de destino.
2- Abrir los stream de entrada y salida mediante los métodos getInputStream() y getOutputStream().
3- Enviar y recibir los datos que deseemos procesar en nuestra aplicación utilizando los métodos definidos por nosotros en dependencia de la problemática.
4- Y por ultimo cerrar los stream mediante el método close()
5- Y cerrar los socket mediante el método close()

Los atributos con los que cuenta la clase socket son:
getLocalPort(): Devuelve el puerto origen (local).
getInetAddress(): Devuelve la dirección destino (remota).
getPort(): Devuelve el puerto destino (remoto).
getLocalAddress(): Devuelve la dirección origen (local).

Ejemplo:

import java.io.*;
import java.net.*;
public class EchoClient
{
  public static void main(String[] args)
  {
    try
    {
      Socket clientSocket = new Socket("192.168.1.2",1234);
      PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),true);
      BufferedReader in = new BufferedReader(new InputStreamReader
(clientSocket.getInputStream()));
      System.out.println("Enviando: ¡¡¡¡Ecooo!!!!");
      out.println("¡¡¡¡Ecooo!!!!");
      System.out.println("Recibiendo: " + in.readLine());
      out.close();
      in.close();
      clientSocket.close();
    }
    catch (UnknownHostException e) { }
    catch (IOException e) { }
  }
}

Trabajar con un socket servidor requiere varios pasos:
1-Abrir el socket: mediante uno de sus constructores, habitualmente dándole el puerto donde escuchar.
2- Enviar y recibir los datos que deseemos procesar en nuestra aplicación utilizando los métodos definidos por nosotros en dependencia de la problemática.
4- Cerrar los streams: mediante el método close().
5- Cerrar el socket: mediante el método close().

Ejemplo:

import java.io.*;
import java.net.*;
public class EchoServer
{
  public static void main(String[] args)
  {
    try
    {
      ServerSocket serverSocket = new ServerSocket(1234);
      Socket clientSocket = serverSocket.accept();
      PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
      BufferedReader in = new BufferedReader(new InputStreamReader
(clientSocket.getInputStream()));
      String inputLine = in.readLine();
      System.out.println("Recibiendo: " + inputLine);
      String outputLine = inputLine.toUpperCase();
      System.out.println("Enviando: " + outputLine);
      out.println(outputLine);
      out.close();
      in.close();
      clientSocket.close();
      serverSocket.close();
    }
    catch(IOException ex) { }
  }
}

Próximo artículo:

Creación de un servidor web simple con soporte para múltiples clientes paso a paso utilizando técnica de multihilos. (Trabajo con ficheros, socket, hilos)



Artículos relacionados


No hay comentarios: