import java.io.*;
import java.net.*;
import java.text.*;
import java.util.*;
import java.lang.reflect.Array;

class StreamPipe extends Thread {
  InputStream inStream;
  OutputStream outStream;
  int counter;

  StreamPipe(InputStream i, OutputStream o, int c) {
    inStream=i;
    outStream=o;
    counter=c;
  }

  public void run() {
    try {
      DataInputStream SIn=new DataInputStream(inStream);
      BufferedOutputStream bCOut=new
        BufferedOutputStream(outStream);

      int len;
      byte []buf=new byte[1024];
      while(true) {
        len=SIn.read(buf);
        bCOut.write(buf,0,len);
        bCOut.flush();
//        printBin(buf,len);
      }
    }
    catch(Exception e) {
      System.out.println("closing:"+counter);
      try {
        inStream.close();
      }
      catch(Exception ex) {
      }
      try {
        outStream.close();
      }
      catch(Exception ex) {
      }
    }
  }
  public void printBin(byte [] b, int len) {
    for(int i=0;i<len;i++) {
//      System.out.print(b[i]+" ");
      System.out.print((char)b[i]);
    }
    System.out.println();
    for(int i=0;i<len;i++) {
      System.out.print(b[i]);
      System.out.print((char)b[i]);
      System.out.print(" ");
    }
    System.out.println();
  }
}