Salve! Con l'aiuto di c0der ho risolto in parte il problema di trasferimento! Adesso il tutto non mi da nessun tipo di errori, ma trasferisce un solo screen, e il resto come se non facesse un tubo!
Sono 4 classi: 2 per il client e 2 per il server, posto il tutto (non sono troppo lunghe)
Main del client:
Transfert del client:codice:import java.awt.*; import javax.swing.*; import java.net.*; class Provadef { public static void main (String args[]){ Socket socket = null; JFrame f = new JFrame (); Robot robot = null; String ip = JOptionPane.showInputDialog("Please enter server IP"); String port = JOptionPane.showInputDialog("Please enter server port"); int porta = Integer.parseInt(port); f.setLayout(null); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setResizable(true); f.setLocation(0, 0); f.setSize(10, 10); f.setVisible(true); f.setTitle("Terminali video"); try { socket = new Socket(ip, porta); (new Transfert(socket)).start(); } catch (Exception e){ System.out.println("Errore nella creazione del socket"); } } }
Main Sever:codice:import java.net.*; import java.io.*; import java.awt.Toolkit; import java.awt.Robot; import java.awt.Rectangle; import java.awt.Image; import java.awt.image.BufferedImage; import javax.imageio.*; import javax.imageio.stream.*; class Transfert extends Thread{ Socket socket; Robot robot; public static int screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); public static int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); public Transfert (Socket socket){ this.socket = socket; } public void run (){ Robot robot = null; ObjectOutputStream out = null; ImageOutputStream iout = null; try { robot = new Robot(); out = new ObjectOutputStream(socket.getOutputStream()); } catch (Exception e){ System.out.println("Impossibile creare lo stream di output"); } try { out.writeObject(screenWidth); out.flush(); out.writeObject(screenHeight); out.flush(); iout = ImageIO.createImageOutputStream(socket.getOutputStream()); while (true){ BufferedImage image = robot.createScreenCapture(new Rectangle(screenWidth,screenHeight)); ImageIO.write(image, "jpg", iout); iout.flush(); Thread.sleep(20); } } catch (IOException ex){ System.out.println("Impossibile trasferire dati sull'output"); } catch (InterruptedException ex){ System.out.println("..."); } } }
Recieve Server:codice:import java.awt.*; import javax.swing.*; import java.net.*; import java.io.*; class Server { public static void main (String args[]){ ServerSocket sSocket = null; Socket socket; JFrame f = new JFrame (); JPanel p = new JPanel (); f.setLayout(null); String port = JOptionPane.showInputDialog("Please enter server port"); int porta = Integer.parseInt(port); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setResizable(true); f.setSize(500, 500); try { sSocket = new ServerSocket (porta); while (true){ System.out.println("Attesa connessione..."); socket = sSocket.accept(); System.out.println("Connessione stabilita!"); f.setVisible(true); (new Recieve(f, p, socket)).start(); } } catch (Exception e){ System.out.println("Impossibile creare socket del server"); } } }
codice:import java.awt.*; import javax.swing.*; import java.net.*; import java.io.*; import java.awt.Image; import java.awt.image.BufferedImage; import javax.imageio.*; import javax.imageio.stream.*; class Recieve extends Thread{ JFrame f; JPanel p; Socket socket; public Recieve (JFrame f, JPanel p, Socket socket){ this.f = f; this.p = p; this.socket = socket; } public void run (){ ObjectInputStream in = null; ImageInputStream iin = null; BufferedImage image = null; int screenWidth = 800; int screenHeight = 600; try { in = new ObjectInputStream(socket.getInputStream()); screenWidth = (int) in.readObject(); screenHeight = (int) in.readObject(); System.out.println("Valore x: " + screenWidth); System.out.println("Valore y: " + screenHeight); } catch (Exception e){ System.out.println("Impossibile aprire flusso di input"); } f.getContentPane().add(p); p.setBounds(0, 0, screenWidth, screenHeight); try { iin = ImageIO.createImageInputStream(socket.getInputStream()); while (true){ image = ImageIO.read(iin); Graphics g = p.getGraphics(); g.drawImage(image, 0, 0, null); Thread.sleep(20); } } catch (IOException e){ System.out.println("Impossibile ricevere segnale video"); } catch (InterruptedException e){ System.out.println("..."); } try { socket.close(); } catch (Exception ex) {} } }

Rispondi quotando


