Newer
Older
gross / src / j2 / ThreadEchoServer.java
@Motoki Miura Motoki Miura on 22 Sep 2020 1 KB first commit for NWP exp
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);
	}
    }
}