import java.net.*;
import java.io.*;

public class TCPThread {
  public static void main(String[] argv) {
    try {
      Socket rwSocket   = new Socket(argv[0], Integer.parseInt(argv[1]));
      InputStream  instrm = rwSocket.getInputStream();
      OutputStream outstr = rwSocket.getOutputStream();

      Thread input_thread  = new Thread(new StreamConnector(System.in, outstr));
      Thread output_thread = new Thread(new StreamConnector(instrm, System.out));
      input_thread.start(); output_thread.start();
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }
}

class StreamConnector implements Runnable {
  InputStream src  = null;
  OutputStream dist = null;
    // $B%3%s%9%H%i%/%?(B $BF~=PNO%9%H%j!<%`$r<u$1<h$k(B
  public StreamConnector(InputStream in, OutputStream out){
    src = in;
    dist = out;
  }

  // $B=hM}$NK\BN(B
  // $B%9%H%j!<%`$NFI$_=q$-$rL58B$K7+$jJV$9(B
  public void run(){
    byte[] buff = new byte[1024];
    while (true) {
      try {
        int n = src.read(buff);
        if (n > 0)
          dist.write(buff, 0, n);
      }
      catch(Exception e){
        e.printStackTrace(System.err);
        System.exit(1);
      }
    }
  }
}
