import java.io.*;
import java.net.*;
import java.awt.*;
import javax.swing.*;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.util.*;

class Lanzador_Cliente_Foto_Hilo{
    public static void main(String args[]){
        // Creo 12 clientes de socket y los pongo a andar
        Cliente_Foto_Hilo[] a=new Cliente_Foto_Hilo[12];
        for(int i=0;i<12;i++){
            a[i]=new Cliente_Foto_Hilo(i);
            a[i].start();
        }
    }   
}

class Cliente_Foto_Hilo extends Thread{

    Pizarra pizarra;
    
    Cliente_Foto_Hilo(int n){
        JFrame ventana=new JFrame();
        ventana.setTitle(""+(n+1));
        ventana.setSize(250,250);
        // Esto es de nota. Es para posicionarlo en la pantalla de windows
        int fila=(int)(n/4);
        int columna=n%4;
        ventana.setLocation((columna*250),(fila*250));
        // ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Un canvas para poner la foto
        pizarra=new Pizarra();
        // Pongo el canvas en la ventana y muestro
        ventana.add(pizarra);
        ventana.setVisible(true);
    }
    
    public void run(){
        // Constantemente pide una foto al servidor y se duerme 5 segundos
        while(true){
            try {
                Thread.sleep(5000);
                pizarra.repaint();
            } catch (Exception e) {}    
        }
    }
}

class Pizarra extends Canvas{
    public void paint(Graphics g){
        try {
            // Recibo la imagen por el socket
            Socket socket=new Socket("127.0.0.1",5005);
            BufferedImage imagen = ImageIO.read(socket.getInputStream());
            // Imprimo la imagen recibida
            socket.close();
            g.drawImage(imagen,0,0,this);
        } catch (Exception e) {}
    }
}