본문 바로가기
알고리즘 문제 풀이/Power JAVA

p768) 5번 문제 - 시간 서버를 만들어 Client에게 시간을 전송해라(Thread이용)

by kakk789 2022. 4. 14.
1초에 한번 시간이 전송 되게 만들었음 
Server에 ThreadTime 클래스를 생성 여러 사용자가 동시에 시간을 받을 수 있게 만들었음
     - 생성자로 socket 매개변수 전달 받도록 진행 
     - ThreadTime tt = new ThreadTime(socket);
결론적으로 NTP 서버를 만들었음

클라이언트 측 코드

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TimeClient {

	public static void main(String[] args) {
		try {
			Socket socket = new Socket("14.37.56.228",9000);
			while(true) {
			System.out.println("클라 실행");
			InputStream is = socket.getInputStream();
			OutputStream os = socket.getOutputStream();
				while(true) {
					byte []data = new byte[100];
					is.read(data);
					String time = new String(data);
					System.out.println(time);
				}
			}			
		}catch (Exception e) {
			System.out.println("예외발생: "+e.getMessage());
		}
	}
}

서버 측 코드

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

class ThreadTime extends Thread{
	Socket socket;
	@Override

	public void run() {
		
		try {
			InputStream is = socket.getInputStream();
			OutputStream os = socket.getOutputStream();
			while(true) {
			os.write(new Date().toString().getBytes());
			Thread.sleep(1000);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("시간 전송 완료");
	}
	public ThreadTime(Socket socket) {
		super();
		this.socket = socket;
	}
}
public class TimeServer{

	public static void main(String[] args) {
		try {
			ServerSocket server = new ServerSocket(9000);
			while(true) {
				System.out.println("타임서버가 실행되었습니다.");
				Socket socket =server.accept();
				ThreadTime tt = new ThreadTime(socket);
				tt.start();	
			}
		}catch (Exception e) {
			System.out.println("예외발생: "+e.getMessage());
		}
	}
}
반응형

댓글