Newer
Older
NWP / src / j2 / ThreadEchoServer.java
@Motoki Miura Motoki Miura on 22 Aug 2020 1 KB ThreadEcho and ThreadTime
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);
		}
	}
	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);
		}

		// クライアントからの要求を受けるソケットを開く 
		try {
			clientSocket = echoServer.accept();
		} catch (IOException e) {
			e.printStackTrace();
		}
		new ThreadEchoServer(clientSocket);

	}
}