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); } } } }