알고리즘 문제 풀이/Power JAVA
p768) 5번 문제 - 시간 서버를 만들어 Client에게 시간을 전송해라(Thread이용)
kakk789
2022. 4. 14. 21:45
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());
}
}
}
반응형