Foros del Web » Programación para mayores de 30 ;) » Java »

Tuberias no funcionan como deberian

Estas en el tema de Tuberias no funcionan como deberian en el foro de Java en Foros del Web. Bueno hice una aplicacion para tratar de entender el funcionamiento de las tuberias y para ello he hecho dos clases una productor y otra consumidor ...
  #1 (permalink)  
Antiguo 19/06/2009, 10:00
 
Fecha de Ingreso: agosto-2008
Mensajes: 18
Antigüedad: 15 años, 8 meses
Puntos: 0
Tuberias no funcionan como deberian

Bueno hice una aplicacion para tratar de entender el funcionamiento de las tuberias y para ello he hecho dos clases una productor y otra consumidor el objetivo es que productor genera un numero aleatorio y luego se lo pasa al consumidor para que el haga con ese dato lo que quiera ahora el problema esta en que el numero que envia el productor es diferente al que recibe el consumidor y por mas que reviso no encuentro donde esta el problema este es el codigo de las clases

Clase Principal
Código:
package programa;
import java.io.*;
public class Main {
    public static void main(String[] args) {
      try {
            PipedOutputStream salida = new PipedOutputStream();
            PipedInputStream entrada = new PipedInputStream(salida);    
                Productor app1 = new Productor(salida);
                Consumidor app2 = new Consumidor(entrada);
                    app1.start();
                    app2.start();
      } catch(IOException ex) {
          System.err.println("Error");
      }
    }
}

Clase Productor

Código:
package programa;
import java.io.*;
import java.util.*;
public class Productor extends Thread {
        private PipedOutputStream salida;
        private Random aleatorio;            
    public Productor(PipedOutputStream salida) {
        this.salida = salida;
        aleatorio = new Random();
    }
    public void run() {
        try {
          int numero = aleatorio.nextInt();
                System.out.println("Productor --> "+numero);
                salida.write((int)numero);
        } catch(IOException ex) {
            System.err.println("Error Lectura/Escritura");
        } 
    }
}
Clase Consumidor

Código:
package programa;
import java.io.*;
public class Consumidor extends Thread {
        private PipedInputStream entrada;
    public Consumidor(PipedInputStream entrada) {
        this.entrada = entrada;
    }
    public void run() {
        try {
                System.out.println("Consumidor --> "+entrada.read());
        } catch(IOException ex) {
            System.err.println("Error Lectura/Escritura");
        }
    }
}
Les agradeceria si me ayudaran a encontrar el error en el programa
  #2 (permalink)  
Antiguo 19/06/2009, 13:50
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Tuberias no funcionan como deberian

Hola:

Si lees la API, tanto "write(int)" como "int read" solo escriben y leen un byte. Por ello, de tu número entero de 4 bytes, probablemente sólo se transmite uno de ellos, que es el que lees al otro lado.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:37.