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());
}
}
}
반응형
'알고리즘 문제 풀이 > Power JAVA' 카테고리의 다른 글
p768) 4번 문제 - 영어 단어를 보내 한글로 번역하시오(Thread) (0) | 2022.04.14 |
---|---|
p596)10번 문제 - 로또 번호 생성 (TreeSet 사용) (0) | 2022.04.09 |
p596)9번 문제 - 심사위원 10명의 점수를 입력 받아라(최고점수, 최저점수 제외) (0) | 2022.04.09 |
p595) 문제 7번 - 국가를 입력하여 수도를 출력하시오(Map 사용) (0) | 2022.04.09 |
p595) 8번 문제 - 이름이 등장하는 횟수를 Map에 저장해보자 (0) | 2022.04.09 |
댓글