Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - manuelfer

Páginas: [1]
1
Hola, tengo una duda.. Me podrían decir como hay que hacer para buscar archivos según la extension como pide el ejercicio? muchas gracias!!!

Armar una aplicación cliente que busque todos los archivos que sean imágenes en el directorio local con las siguientes extensiones (.jpg, .bmp, .png, .gif) y que envíe la mas grande de cada tipo a un servidor que esta escuchando en una IP particular y en el puerto 7777. Si no llegara a encontrar algún archivo con alguna de las extensiones requeridas, deberá conectarse al servidor y pedir dicho archivo.

2
Buenas a todos, tengo una duda que no se como y que se tiene que cerrar en un programa donde tiene Socket, ServerSocket, Entrada y salida de datos y buffer's.

Acá dejo una parte mi programa para que vean como cierro yo los socket y demás, quiero saber si estoy en lo correcto o hay que corregir algo, ya que tengo que improvisar mucho porque me ha saltado muchas excepciones y quiero saber la forma correcta. Muchas gracias !!


Código: [Seleccionar]
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {

private static final int PUERTO = 8080;

public static void main(String[] args) {

try {
ServerSocket server = new ServerSocket (PUERTO);
Socket cliente = server.accept();
DataInputStream dis = new DataInputStream (cliente.getInputStream());
DataOutputStream dos = new DataOutputStream (cliente.getOutputStream());
BufferedInputStream bis = null;
BufferedOutputStream bos = null;

try {

String nombreArchivo = dis.readUTF();
System.out.println("El cliente pidio que se busque el archivo: "+nombreArchivo);

File file = new File ("/Users/ignaciolopez/Documents/"+nombreArchivo);

System.out.println("Se encontro el archivo: "+file.getName()+" - Peso: "+file.length());

int tamano = (int) file.length();
dos.writeInt(tamano);
dos.writeUTF(file.getName());

bis = new BufferedInputStream (new FileInputStream (file));
    bos = new BufferedOutputStream (cliente.getOutputStream());

byte buffer [] = new byte [tamano];

for (int i =0; i<buffer.length; i++){
buffer[i] = (byte) bis.read();
}

for (int i = 0; i < buffer.length; i++){
bos.write(buffer[i]);
}

bos.flush();

} finally {
server.close();
cliente.close();
dis.close();
dos.close();
bis.close();
bos.close();
}

} catch (IOException e) {
e.printStackTrace();

}

}

}

3
Hola, como andan a todos. Tengo una duda de este problemas, que el productor tiene que generar caracteres aleatorios (la cantidad que quiera) y el consumidor lo tiene que comer.
El problema es que cuando los dos hilos (consumidor y productor) empiezan al mismo tiempo, hay aveces que primero sale el Consumidor, y segundo el Productor (Cosa que nunca puede pasar porque primero tiene que el productor producir un carácter y después si o si el consumidor.

Ejemplo correcto:
Productor 1: R
Consumidor 1: R
Productor 2: J
Consumidor 2: J
........
....

Ejemplo lo que me pasa aveces a mi:
Consumidor 1: R
Productor 1: R
Consumidor 2: K
Productor 2: K
......
...

Acá va el código para que puedan ver como lo estoy haciendo hasta el momento.


Productor.java
Código: [Seleccionar]
import java.util.Random;

public class Productor extends Thread {
private Pila pila;
private String alfabeto = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private char c;
private Random random = new Random();


public Productor (Pila pila, int cant, int ms){
this.pila = pila;

}

public Productor (Pila p){
this.pila = p;;
}

public void run (){
for (int i = 1; i < 11 ; i++){
c = alfabeto.charAt(random.nextInt(26));
pila.poner(c);
System.out.println("Productor "+i+": "+c);
}

}
}

Consumidor.java
Código: [Seleccionar]
public class Consumidor extends Thread {
private Pila pila;


   
public Consumidor (Pila pila){
this.pila = pila;
}

public void run (){


for(int i = 1; i < 11; i++){
char c;
c = pila.sacar();
System.out.println("Consumidor "+i+": "+c);
}

}

}

Pila.java
Código: [Seleccionar]
import java.util.ArrayList;


public class Pila {
ArrayList <Character> pila = new ArrayList<Character>();
private char c;

public synchronized  char sacar(){

if(pila.size()==0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

c = pila.remove(0);
notify();

return c;
}

public synchronized char poner(char c){
if (pila.size()!=0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}

pila.add(c);
notify();

return c;

}

}

Main.java

Código: [Seleccionar]
public class Main {
public static void main(String[] args) {
Pila pila = new Pila();

Productor pr = new Productor(pila);
Consumidor cs = new Consumidor (pila);
pr.start();
cs.start();


}
}

Conclusion: No me sale, que primero SIEMPRE, salga el productor y después el consumidor. Muchas gracias

4
El enunciado es el siguiente:

TALLER DE PROGRAMACIÓN I

Ejercicio 1

Necesitamos implementar una caché de objetos de tipo Mensaje en un servidor. Los mensajes tienen un id, un texto (el mensaje propiamente dicho), una prioridad asociada (la cual debe ser implementada utilizando enums), una fecha y hora de recepción.

El servidor de caché tiene un límite de la cantidad de objetos que puede guardar, una vez alcanzado ese límite, y frente a la llegada de otro mensaje, el mismo procede a descartar el de menor prioridad y entre los de menor prioridad el más viejo de todos.

Si la condición anterior se repitiera 3 veces el servidor debe lanzar una excepción verificada informando del problema.

El usuario de la caché puede realizar dos operaciones:

1) Pedir todos los objetos de una determinada prioridad

2) Pedir una Set de todos los elementos ordenados por prioridad


Ejercicio 2


Modifique el ejercicio anterior para que la caché pueda funcionar con otros elementos además del Mensaje y que sea validado en tiempo de compilación.



Les muestro lo que hice, y luego le digo en que parte me quede.

Código: [Seleccionar]
public class Mensaje {

private String id;
private Prioridad prio;
private String fecha;
private String hora;

public Mensaje (String id, Prioridad prio, String fecha, String hora) {

this.id = id;
this.prio = prio;
this.fecha = fecha;
this.hora = hora;

}

public String getId () {
return id;
}

public Prioridad getPrio () {
return prio;
}

public String getFecha () {
return fecha;
}

public String getHora () {
return hora;
}


}


Código: [Seleccionar]
import java.util.ArrayList;
public class Menu {
ArrayList <Mensaje> lista = new ArrayList <Mensaje> ();

public Menu () {

}

public void agregarMensajes (Mensaje m) {
lista.add (m);
}

public void cantidadMensajes (){
System.out.println(lista.size ());
}

public void borrarMensajes (){
int limite, cant;
cant = lista.size ();
limite = 3;
if (cant == limite){
lista.remove (Prioridad.BAJA);
}
}

 }


Código: [Seleccionar]
public enum Prioridad {
BAJA, MEDIA, ALTA;

}


Código: [Seleccionar]
public class Test {

public static void main(String[] args) {

Menu tester = new Menu ();
Mensaje m1 = new Mensaje ("18-8fg2-87hg",Prioridad.BAJA,"14/8/15","14:32 AM.");
Mensaje m2 = new Mensaje ("92-555j7-32g",Prioridad.ALTA,"4/9/15","11:25 AM.");
Mensaje m3 = new Mensaje ("66-785Y-32g",Prioridad.MEDIA,"6/3/15","22:15 AM.");
Mensaje m4 = new Mensaje ("92-555j7-32g",Prioridad.ALTA,"4/9/15","11:25 AM.");

tester.agregarMensajes (m1);
tester.agregarMensajes (m2);
tester.agregarMensajes (m3);
tester.agregarMensajes (m4);

tester.cantidadMensajes ();

tester.borrarMensajes();

tester.cantidadMensajes();
}
}

Yo hice hasta ahi, me quede en como borrar el mensaje que tenga la PRIORIDAD.BAJA... Nose como hacer para que el mensaje tenga la prioridad baja, al excederse del limite de 3 mensajes se elimine. Me podrian ayudar como hacer?


Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".