Logo Revista Java

startjavaabout

articles

00. Prólogo (java)
01.a TEMAS INTRODUCTORIOS. (java)
01.b Comandos que Inician la Máquina de Java y la salida de texto (java)
01.c Descripción empírica de la Programación Orientada a Objetos con Java. (java)
01.d Herencia Soportada por Java y Tipos de Datos Básicos. (java)
01.e Operadores, Delimitadores Básicos Y los nombres de función Válidos. (java)
02.a Codificación Inicial y Estructuras de Datos. (java)
02.b Paquetes, y Palabras clave, (Reservadas) (java)
02.c Tipos de Datos, y declaraciones de funciones, Tablas. (java)
02.d Bucles y Tomas de decisión, Excepciones y Control de Errores. (java)
02.e Secuencias de Escape (java)
02.f Concatenación y Conversiones a Texto. (java)
02.g Métodos de Entrada y Salida de datos (java)
02.h Crear Objetos de la biblioteca de Java (java)
02.i Ejercicio: Entrada de Datos y Conversiones (if, try, catch) (java)
02.j Ejercicios, usando excepciones y while, y switch (java)
02.k Práctica complementaria Resuelta sin Arreglos. (java)
02.l Ejercicios de la práctica complementaria (java)
02.m Práctica complementaria resuelta Ej 6 y 7 (java)
02.m Práctica complementaria resuelta Ej 8 y 9 (java)
03.a Métodos estáticos y mecanismos de programación (java)
03.b Arreglos (Arrays o Vectores) (java)
03.c La clase Math como ayudante para resolver problemas (java)
03.d Usando arreglos para un buffer, colas de espera, pilas y listas. (java)
03.e Implementación del buffer tipo FIFO (Cola de espera, el primero es primero en salir) (java)
03.f Implementación del buffer tipo FIFO (Cola de espera, el primero es primero en salir) 2da parte (java)
03.g Implementación del buffer tipo LIFO (La pila, último en llegar es primero en salir) (java)
03.h Implementación del buffer tipo LIFO (La pila, último en llegar es primero en salir) 2da parte (java)
03.i Implementación de una Lista de datos. (java)
03.j Búsqueda Secuencial dentro de la lista de datos. (java)
03.k Búsqueda Aleatoria dentro de la lista de datos. (java)
03.l Búsqueda binaria dentro de una lista ordenada de datos. (java)
03.m Método para Ordenar - La Burbuja (java)
03.n Método para Ordenar - QuickSort Recursivo (java)
03.o Ejercicios Resueltos, ordenar con Java (java)
04.a Nuestro primer Objeto en Java (java)
04.b Codificación del primer Objeto en Java (java)
Continuación del programa que se conecta por la red para procesar información, ya vimos la parte de la Telefonista, ahora veremos la secretaria.

03.f Implementación del buffer tipo FIFO (Cola de espera, el primero es primero en salir) 2da parte

(320)
Continuación del programa que se conecta por la red para procesar información, ya vimos la parte de la Telefonista, ahora veremos la secretaria.
contact
Created,Modified
2009-04-02 11:52:25, 2009-05-07 19:09:04
Author,Nick
Gustavo Guillermo Perez, (madgus) [myblog]

Secretaria:

  1. package com.compunauta.aprendiendojava;

  2. import java.io.*;

  3. import java.net.*;

  4. /**

  5. * <p>Título: Aprendiendo Java</p>

  6. * <p>Descripción: Ejemplos del Libro Aprendiendo Java de Compunauta</p>

  7. * <p>Copyright: Copyright (c) 2006 www.compunauta.com</p>

  8. * <p>Empresa: COMPUNAUTA</p>

  9. * @author Gustavo Guillermo Pérez

  10. * @version 2006.01.01

  11. */

  12. public class Cap3_sock_sec {

  13. //Declaramos unas variables globales a este tipo de datos

  14. public static int PORT=4567;

  15. public static String HOST="127.0.0.1";

  16.  

  17. public static void main(String[] args) {

  18. System.err.println("Intentando conectar con la telefonista");

  19. Socket skt=(Socket)null;

  20. try {skt = new Socket(HOST, PORT);}

  21. catch (Exception ex) {

  22. System.err.println("La telefonista no está en línea");

  23. System.exit(-1);

  24. }

  25.  

  26. int tel;

  27. BufferedReader teclado=new BufferedReader(new InputStreamReader(System.in));

  28. try {

  29. ObjectOutputStream datos = new ObjectOutputStream(skt.getOutputStream());

  30. System.err.println("Nos conectamos con la telefonista:"+HOST+":"+PORT);

  31. System.err.println("Ingrese números -1 termina");

  32. while (true){

  33. if((tel=leerInt(teclado))==-1){

  34. System.err.println("Programa terminado");

  35. datos.writeInt(-1);

  36. datos.flush();

  37. datos.close();

  38. skt.close();

  39. System.exit(0);

  40. }else{

  41. datos.writeInt(tel);

  42. datos.flush();

  43. }

  44. }//fin de la lectura eterna

  45. }catch (IOException ex1) {ex1.printStackTrace(System.err);}

  46.  

  47. }//fin del método principal

  48. //Funciones o métodos auxiliares

  49. public static int leerInt(BufferedReader buff){

  50. int lee=0;

  51. boolean error;

  52. do {

  53. error=false;

  54. try {lee = Integer.parseInt(buff.readLine());}

  55. catch (NumberFormatException ex) {

  56. System.err.println("Entrada erronea, repetir:?");

  57. error=true;}

  58. catch (Exception ex){ex.printStackTrace(System.err);}

  59. } while (error);

  60. return lee;

  61. }//final de la funcion leer

  62. }//final de la clase

Descripción del funcionamiento:

En las líneas 15 y 16 declaramos las variables globales que almacenarán el puerto y la dirección de red donde nos conectaremos, en este caso la dirección 127.0.0.1 es universal y permite conectarse a la misma máquina así que podremos ejecutar el programa de la secretaria y la telefonista en la misma PC en consolas de comandos diferentes, si estamos en el laboratorio con más de 1 PC en RED, entonces en ese número pondremos el que nos comente el administrador del sistema para conectarnos a la PC que correrá la telefonista.

En la línea 18 comienza nuestro método principal y de la misma manera que en el programa anterior definimos el Socket (skt) como un elemento vacío sin inicializar, ya que estamos obligados a revisar errores.

Entre las líneas 21 a 25 comprobamos que se pueda hacer una conexión al puerto y dirección de red indicados, puede suceder que el error no sea exactamente que la telefonista no está en línea y que el sistema operativo esté denegando el acceso a conectarse al exterior, por ello revisar el firewall del sistema o los permisos necesarios.

Si nos pudimos conectar el programa siguió adelante y procedemos a crear un objeto BufferedReader para manipular la entrada por teclado y declaramos una variable tel que almacenará un teléfono para enviar.

En la línea 29 comienza el bloque donde abriremos la conexión de datos remota por medio de un flujo de datos del tipo ObjetOutputStream.

Como en el componente anterior utilizamos un bucle eterno para la ejecución del programa que saldrá por otros mecanismos. (línea 33).

En la línea 34, asignamos el valor que se lee por teclado a la variable tel, ese segmento está entre paréntesis porque porque ese mismo valor asignado lo compararemos antes de proseguir, podríamos haber hecho primero la asignación y después la comparación.

Si la secretaria escribió -1 enviamos el -1 a la telefonista para avisarle que terminamos, (línea 36), la orden datos.fluxh(); vacía los datos de memoria RAM al flujo de datos inmediatamente y en las líneas 38 y 39 cerramos debidamente el flujo de datos y la conexión de red antes de salir sin producir error, salir con el código 0 es no producir error.

En la línea 41 comienza el bloque de datos que se ejecutará caso contrario a que la secretaria ingrese un -1. Donde podemos ver que escribimos en el flujo de datos el número entero correspondiente al teléfono y obligamos la escritura inmediata con la orden flush();.

Termina el bucle etenro while(true){} termina el bloque de control de errores y el método principal, a continuación están la función auxiliar leerInt que no explicaremos porque es la misma que vimos en el capítulo anterior.

Nota: Veremos con más detalles el uso de sockets durante el transcurso del libro, no ahondaremos en ello ahora. Queda como ejercicio para el lector producir el error de Buffer Overrun y revisar en la documentación electrónica los métodos y objetos utilizados de la biblioteca de Java.


leavecomment

*Hasta que esta leyenda no desaparezca el libro no ha sido terminado, descarge en pdf:

http://compunauta.com/forums/linux/programacion/java/ebook.html




Aprendiendo Java - Ejemplos resueltos, Ejercicios, prácicas y técnicas de programación con Java #1 - ezine - ©Compunauta - myblog - Anuncios - 1072