import java.io.*; import java.net.*; import java.util.*; public class HelloWorldMultiThreadServer { public static void main(String argv[]) { try { // サーバーソケットの生成 ServerSocket serverSocket = new ServerSocket(5555); // メインループ while(true) { try { System.out.println("クライアントからの接続をポート5555で待ちます"); // クライアントからの接続を待ちます Socket socket = serverSocket.accept(); System.out.println(socket.getInetAddress() + "から接続を受付ました"); // 処理をスレッドに任せます new Connect(socket); } catch (Exception ex) { ex.printStackTrace(); } } } catch (IOException e) { e.printStackTrace(); } } } class Connect extends Thread { private Socket socket = null; public Connect(Socket socket) { this.socket = socket; // スレッド開始 this.start(); } public void run() { try { // 出力ストリームを取得 PrintWriter out = new PrintWriter(socket.getOutputStream(), true); // 入力ストリームを取得 BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); // 読み込んだ行をそのまま出力ストリームに書き出す String inputLine; while ((inputLine = in.readLine()) != null) { out.println(inputLine); } System.out.println("処理が終了したので接続を切ります"); // 入出力ストリームを閉じる in.close(); out.close(); // ソケットを閉じる socket.close(); } catch(Exception e) { try { socket.close(); }catch(Exception ex) { e.printStackTrace(); } } } }