package instantMessanger; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import java.net.SocketException; public class CopyThread extends Thread { InputStream is = null; OutputStream os = null; PrintStream ps = null; String quale = null; public CopyThread(InputStream is, OutputStream os, String quale) { this.is = is; this.os = os; this.quale = quale; } public CopyThread(InputStream is, PrintStream ps, String quale) { this.is = is; this.ps = ps; this.quale = quale; } public void run() { BufferedReader rdr = new BufferedReader(new InputStreamReader(is)); if(ps==null) ps = new PrintStream(os); String line = null; do { try { line = rdr.readLine(); if(line!=null && line.equals(".")) break; // per trattare la terminazione a' la SMTP ps.println(line); } catch(SocketException e) { // il canale di output corrispondente รจ stato chiuso System.out.println("Canale remoto chiuso"); break; } catch (IOException e) { e.printStackTrace(); } } while(line!=null); System.out.println("Terminazione flusso "+quale); ps.close(); System.out.println("Output stream chiuso"); return; } }