Está en la página 1de 4

DESCRIPCION DE CLASES Y METODOS El Paquete I/O de Java El paquete I/O de Java (java.

io) Da una completa utilidad de entrada y salida utilizados para leer y escribir ficheros de datos y otras fuentes de entrada y salida. Las clases e interfaces definidos en java.io se cubren completamente en Canales de Entrada y Salida.

El Paquete de Red de Java El paquete java.net contiene definiciones de clases e interfaces que implementan varias capacidades de red. Las clases de este paquete incluyen una clase que implementa una conexin URL. Se puede utilizar estas clases para implementar aplicaciones cliente -servidor y otras aplicaciones de comunicaciones.

El Paquete de Utilidades de Java Este paquete, java.util, contiene una coleccin de clases tiles. Entre ellas se encuentan muchas estructuras de datos genricas (Dictionary, Stack, Vector, Hashtable) un objeto muy til para dividir cadenas y otro para la manipualcin de calendarios. El paquete java.util tambin contiene el interface Observar y la clase Observable que permiten a los objetos notificarse unos a otros cuando han cambiado. Las clases de java.util no se cubren en este tutorial aunque algunos ejemplos utilizan estas clases. CLASE CLIENTE Permite conectarse a un servidor con un puerto determinado, puede acceder un servicio remoto a otro computador o en este caso espacial conectarse con la propia maquina. Mtodo Socket Mediante la clase Socket incluida en el paquete java.net podemos crear conexiones de flujo, que son los que utilizan el protocolo TCP, entre dos ordenadores. El tipo de datos en la comunicacin puede ser cualquiera, y por ello el protocolo TCP es usado por http, ftp, telnet, etc. Ms adelante veremos un sencillo ejemplo de comunicacin entre un navegador y una aplicacin Java y veremos de forma bsica como es el protocolo http y como interacciona un navegador con un servidor. Metodo Scanner Scanner es una clase que nos permite analizar textos mediante patrones para descubrir tipos de datos primitivos en l. Se le puede configurar un delimitador para saber hasta donde tiene que leer el texto. Scanner reader = new Scanner(System.in); System.out.println("Introduce un texto"); System.out.println(reader.next());

Obtener el InputStream y/o OutputStream Ahora en cliente tenemos la conexin con el cliente (valga la redundancia). Lo nico que tenemos que hacer es obtener de l el OuputStream o InputStream con los mtodos getOutputStream() o getInputStream(). La clase OutpuStream nos sirve para enviarle datos al cliente. La clase InputStream nos sirve para leer datos del cliente. InputStream entrada = cliente.getIntputStream(); OutputStream salida = cliente.getOutputStream(); Construirnos un InputStream y/o un OutputStream ms adecuados a nuestras necesidades. Los mtodos de estas dos clases para leer o escribir datos son un poco feos, ya que nicamente envan bytes. Suele ser habitual construir alguna otra clase de entrada/salida de datos que tenga mtodos ms adecuados: Si queremos enviar o recibir tipos normales (enteros, flotantes, strings) tenemos las clases DataInputStream y DataOutputStream. Estas clases tienen un constructor que admite un InputStream y un OutputStream respectivamente. DataInputStream entradaDatos = new DataInputStream (entrada); DataOuputStream salidaDatos = new DataOutputStream (salida); Si queremos enviar o recibir clases enteras propias nuestras, tenemos las clases ObjectInputStream y ObjectDataStream. Al igual que las anteriores, usaremos el constructor que admite un InputStream y un OutputStream. ObjectInputStream entradaObjetos = new ObjectInputStream (entrada); ObjectOutputStream salidaObjetos = new ObjectOutputStream (salida); Estas nuevas clases tienen mtodos ms bonitos de usar (writeInt(), writeChar(), etc) Envio/Lectura de datos normales (enteros, flotantes, strings) El envo/lectura de datos normales se hace con las clases DataInputStream y DataOutputStream. No tienen ningn truco especial, basta usar el metodo adecuado (writeInt(), writeFloat(), readInt(), etc). Para strings usaremos los mtodos writeUTF() y readUTF(), que envan/leen las cadenas en formato UTF. Metodos in y out in - Flujo de entrada, permite recibir datos out - Flujo de salida, permite enviar datos CLASE SERVIDOR Una aplicacin informtica o programa que realiza algunas tareas en beneficio de otras aplicaciones llamadas clientes. Algunos servicios habituales son los servicios de archivos, que permiten a los usuarios almacenar y acceder a los archivos de una computadora y los servicios de aplicaciones, que realizan tareas en beneficio directo del usuario final. Este es el significado original del trmino. Es posible que un ordenador cumpla simultneamente las funciones de cliente y de servidor. Crear el socket servidor Para hacer el servidor en java tenemos la clase ServerSocket. Al instanciarla usaremos el constructor al que se le pasa un nmero de servicio (de puerto). Como se vio en C, este nmero de puerto puede ser cualquier entero entre 1 y 65535. Los nmeros de 1 a 1023 estn reservados para servicios del sistema (como ftp, mail, www, telnet, etc, etc). Del 1024 en adelante podemos usarlos a nuestro gusto. Lo nico es que no puede haber dos servidores atendiendo al mismo puerto/servicio. ServerSocket socket = new ServerSocket (35557);

Aceptar un cliente Una vez creado el servidor, le decimos que empiece a atender conexiones de clientes. Para ello llamamos al mtodo accept(). Este mtodo se queda bloqueado hasta que algn cliente se conecta. Nos devuelve un Socket, que es la conexin con dicho cliente. Socket cliente = socket.accept(); Podemos aceptar simultneamente varios clientes, pero para atenderlos necesitaremos programacin multitarea o algo similar. DESCRIPCIN DE DOS UTILIDADES LINUX PARA PROBAR CONEXIONES TCP Ver conexiones TCP/UDP establecidas Enviar por correo electrnico Escribe un blog Compartir con Twitter Compartir con Facebook Compartir con Google Buzz Mediante el comando netstat podemos revisar la operacion de nuestra maquina en la capa de transporte, es decir, de la creacin de conexiones y flujos con otros equipos a travs de la red. Asi como en otro monton de opciones distintas, en este post nos enfocamos en consultar las conexiones activas que se estan llevando a cabo, para lo que simplemente tecleamos: $netstat -atnu | grep ESTAB y nos mostrar algo como: tcp 0 0 172.16.1.33:60794 66.102.7.19:443 ESTABLECIDO tcp 0 0 172.16.1.33:35120 65.55.71.221:1863 ESTABLECIDO tcp 0 0 172.16.1.33:33338 66.102.7.19:443 ESTABLECIDO Y se preguntarn, y esto para qu me sirve? bueno pues nos indica quien o que esta intercambiando informacin con nuestro equipo. Espero que les saque de apuros. Ver conexiones TCP/UDP establecidas 2 Enviar por correo electrnico Escribe un blog Compartir con Twitter Compartir con Facebook Compartir con Google Buzz Hace poco publique un comando para visualizar todas las conexiones que nuestro equipo esta haciendo en ese momento, hoy me encontr una forma mas fcil de hacerlo, aqu les dejo el comando y la salida de ejemplo: lsof | grep TCP En general lsof sirve para listar archivos abiertos pero debido a que en la naturaleza de linux muchas cosas como puertos y sockets tambin se representan como archivos, podemos tomar ventaja de ello, el comando nos mostrara un resultado como el siguiente:

CLASE CLIENTE-SERVIDOR

CONEXIONES TCP

CONEXIONES UDP