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;
    // コンストラクタ 入出力ストリームを受け取る
  public StreamConnector(InputStream in, OutputStream out){
    src = in;
    dist = out;
  }

  // 処理の本体
  // ストリームの読み書きを無限に繰り返す
  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);
      }
    }
  }
}
