package j2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class ThreadEchoServer implements Runnable { Socket sock; Thread thread; ThreadEchoServer(Socket sc){ sock = sc; //start running thread = new Thread(this); thread.start(); // スレッドが run()を背負って走る } @Override public void run() { String line = null; BufferedReader br = null; PrintStream os = null; System.out.println("accept"); try { br = new BufferedReader(new InputStreamReader(sock.getInputStream())); os = new PrintStream(sock.getOutputStream()); // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す while ((line = br.readLine()) != null) { System.out.println("(Server received) " +line); os.println(line); } } catch (IOException e) { // os.close(); System.out.println(e); } finally { System.out.println("disconnected "+sock.toString()); } } @SuppressWarnings("resource") public static void main(String args[]) { // ソケットの宣言 ServerSocket echoServer = null; Socket clientSocket = null; // ポート9999番を開く try { echoServer = new ServerSocket(9999); } catch (IOException e) { System.out.println(e); } while(true) { // クライアントからの要求を受けるソケットを開く try { clientSocket = echoServer.accept(); } catch (IOException e) { e.printStackTrace(); } new ThreadEchoServer(clientSocket); } } }