Como atualizar a cada segundo imagem enviada para o servidor e exibida num Frame

Olá Pessoal, estou fazendo um ultra básico VNC em java com a função de apenas exibir a imagem do cliente no servidor em um frame.

Isso consegui fazer, porém não sei como fazer ele ficar atualizando de segundo a segundo no mesmo frame.

Deem uma ajudinha urgente pra mim por favor :wink:

Segue o código:

//====== Cliente ======

import java.awt.*;  
import java.awt.image.*;  
import java.io.*;  
import java.net.*;  
import javax.imageio.*;  
import javax.swing.ImageIcon;  
   
public class Cliente2 {  
      
    private Robot robot;  
      
    public Cliente2() throws AWTException {  
        robot = new Robot();  
    }  
      
    public BufferedImage getScreen() {  
        Dimension screenSize  = Toolkit.getDefaultToolkit().getScreenSize();  
        Rectangle screen = new Rectangle( screenSize );  
        BufferedImage i = robot.createScreenCapture( screen );  
        return i;  
    }  
      
    public void saveScreen( String fileName ) throws IOException {  
        File file = new File( fileName );  
        file.createNewFile();  
        ImageIO.write( getScreen(), "JPEG", file );  
    }  
      
    public void sendScreen() throws IOException {  
        ImageIcon imageIcon = new ImageIcon( getScreen() );  
        Socket socket = new Socket( "127.0.0.1", 12345 );  
        OutputStream os = socket.getOutputStream();  
        ObjectOutputStream oos = new ObjectOutputStream( os );  
        oos.writeObject( imageIcon );  
        oos.flush();  
        os.close();  
    }  
      
    public static void main( String[] arg ) {  
        try {  
            Cliente2 sc = new Cliente2();  
            sc.saveScreen( "screen.jpeg" );  
            sc.sendScreen();  
        }  
        catch( AWTException x ) {  
            x.printStackTrace();  
            System.exit( 1 );  
        }  
        catch( IOException x ) {  
            x.printStackTrace();  
            System.exit( 2 );  
        }  
    }  
}  

//====== Servidor ======

import javax.swing.*;  
import java.io.*;  
import java.net.*;  
   
public class Servidor2 extends JFrame implements Runnable {  
    private JLabel label;  
    private Thread t;  
    private boolean running = false;  
    private ServerSocket socket;  
      
    public Servidor2() {  
        label = new JLabel();  
        JScrollPane p = new JScrollPane( label );  
        getContentPane().add( p );  
        setDefaultCloseOperation( EXIT_ON_CLOSE );  
        setSize( 800, 600 );  
        setVisible( true );  
        try {  
            socket = new ServerSocket( 12345 );  
            start();  
        }  
        catch( IOException x ) {  
            x.printStackTrace();  
        }  
    }  
      
    public void start() {  
        t = new Thread( this );  
        running = true;  
        t.start();  
    }  
      
    public void run() {  
        while ( running ) {  
            try {  
                Thread.sleep( 200 );  
                socket.setSoTimeout( 190 );  
                Socket s = socket.accept();  
                InputStream is = s.getInputStream();  
                ObjectInputStream ois = new ObjectInputStream( is );  
                Object obj = ois.readObject();  
                if ( obj instanceof ImageIcon ) {  
                    invalidate();  
                    ImageIcon i = (ImageIcon)obj;  
                    label.setIcon( i );  
                    validate();  
                }  
            }  
            catch( SocketTimeoutException x ) {  
                 
            }  
            catch( Exception x ) {  
                x.printStackTrace();  
            }  
        }  
    }  
      
    public void stop() {  
        running = false;  
    }  
      
    public static void main( String[] arg ) {  
        new Servidor2();  
    }  
}  

Agradeço desde já a atenção.

Veja os tutoriais a partir de “O loop de animação”:
http://www.pontov.com.br/site/index.php/java/48-java2d

E esse PDF aqui:
http://fivedots.coe.psu.ac.th/~ad/jg/ch1/index.html

Então ViniGodoy, não encontrei exatamente o que eu quero, não poderia dizer mais especificamente o que devo fazer e onde no código? Por favor.

Ahem… vc quer que eu programe o para você? Cara, esses tutoriais dizem exatamente o que você quer. Mas você vai ter o trabalho de ler, entender e então adapta-los para o seu código. E isso vai levar muito mas do que 26 minutos.

Cara eu li os dois, só não entendi pois sei o básico do básico de Java e não sei o que colocar e onde colocar, não estou pedindo para programar para mim, pois acredito que a maior parte do código já está pronta, gostaria que dissesse algo como usa o repaint() em tal lugar, tira tal coisa, etc etc se possível, material para ler na internet eu encontrei vários, mas não sei aplicá-los…Achei que aqui conseguiria umas dicas mais específicas para o que quero fazer…Só isso.

da pra fazer algo mais elaborado… mas uma solução simples seria vc criar um thread no Cliente e nele colocar o que vc colocou no seu main do Cliente…

então executar aqueles métodos de x em x milisegundos… nem testei mas provavelmente funcionaria

Ah vlw cara, vou testar aqui…Brigadão.