package j2; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; import java.net.UnknownHostException; public class EchoClient { // プログラムの本体main public static void main(String[] args) { if (args.length < 2) { args = new String[2]; args[0] = "127.0.0.1"; args[1] = "9999"; } new EchoClient(args[0], args[1]); } public EchoClient(String address, String strport) { // ソケットや入出力用のストリームの宣言 Socket socket = null; DataOutputStream dos = null; BufferedReader isbr = null; BufferedReader stdinbr = null; int port = Integer.parseInt(strport); try { socket = new Socket(address, port); isbr = new BufferedReader(new InputStreamReader(socket.getInputStream())); // サーバからの文字列読み出し stdinbr = new BufferedReader(new InputStreamReader(System.in)); // 標準入力からの文字列読み出し dos = new DataOutputStream(socket.getOutputStream()); // サーバへの文字列書き出し } catch (UnknownHostException e) { System.err.println("Don't know about host: " + address); } catch (IOException e) { System.err.println("Echoサーバ [" + address + ":" + port + "] に接続できませんでした"); System.exit(1); // 異常終了(エラーで終了)なら1 } // サーバーにメッセージを送る if (socket != null && dos != null && isbr != null) { try { // メッセージを送ります dos.writeBytes("HELLO\n"); // サーバーからのメッセージを受け取り画面に表示します String line; while ((line = isbr.readLine()) != null) { System.out.println("Server: " + line); if (line.equals("quit")) break; String s = stdinbr.readLine(); System.out.println(s); dos.writeBytes(s + "\n"); } // 開いたソケットなどをクローズ dos.close(); isbr.close(); socket.close(); } catch (UnknownHostException e) { System.err.println("Trying to connect to unknown host: " + e); } catch (IOException e) { System.err.println("IOException: " + e); } } } }