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:

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");
		}
	}
}
Transfert del client:

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("...");
		}
	}
}
Main Sever:
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");
		}
	}
}
Recieve 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) {}
	}
}