본문 바로가기
728x90
반응형

JAVA SE/Code23

CODE [20.08.06/Day_21] Java SE / Chatting 서버, 클라이언트 구현 (IO, Thread, GUI, synchronized list) step5 채팅 서버 클라이언트 구현 (GUI 활용 + synchronized) Chatting Program의 UML 다수에 클라이언트에게 동시에 서비스(통신)를 제공해야 하기 때문에, 한 서버에서 Thread를 여러 개 생성해준다. → multi-Threading step4와 다른 점은 client에도 multi-Threading을 해준다는 점이다. 그 이유는, client끼리도 '서로 메세지를 주고 받고'기능 통신 서비스를 동시에 실행되어야 하기 때문이다. (다른 사람의 메세지도 보고, 나의 메세지도 뿌려주고 → broadcast() 함수로 구현) [ ChattingServer ] list → Client와 통신하는 객체를 리스트에 저장 다수의 스레드(serv.. 2020. 8. 5.
CODE [20.08.05/Day_20] Java SE / Network 네트워크 | 다수의 클라이언트에서 메아리 서비스 구현 (멀티 스레드 활용) step4 다수의 클라이언트에게 지속적으로 메아리 서비스하는 서버 구축 다수의 클라이언트에게 지속적으로 서비스하기 위해서는 서버측에 멀티 스레드가 필요하다. 클라이언트가 접속할 때, 서버는 접속한 클라이언트에 대응되는 소켓을 accept()으로 반환받고, 클라이언트와 실제 통신할 ServerWorker Thread 생성 시에 생성자에 해당 소켓을 할당한다. 이렇게 ServerWorker Thread를 생성하고, start() 하는 역할까지가 MultiServer의 할일이다. ⇒ ServerWorker는 MultiServer내 while문에 삽입되어 작동하는 역할을 한다. [ 클라이언트 측 필요 클래스 ] 클라이언트는 step3의 Client를 그대로 사용해도 된다. (https://creamilk88.t.. 2020. 8. 5.
CODE REVIEW [20.08.05/Day_20] Java SE / Network 네트워크 | 메아리 서버/클라이언트 구현 복습 [ Review 복습 ] 서버 클라이언트 ServerSocket(port) → 대표 전화 역할 try 영역 try 영역 ServerSocket.accept() → 대기 상태 Socket socket = ServerSocket.accept(); → 직원 전화 역할 → Socket이 만들어지면(클라이언트 연결되면) 동작(연결) → 클라이언트가 여러 명일 경우 accept() 여러 개 → 한사람과 통화할 경우 (input, output반복) accept() 한 개 socket = new Socket(serverIp, port) → 고객 전화기 역할 → 소캣이 정상적으로 생성됐다는 것은 서버와 접속됨을 의미 → server에 accept가 실행되며, 서버 socket(직원 전화기)이 만들어짐 scanner = .. 2020. 8. 5.
CODE [20.08.04/Day_19] Java SE / Network 네트워크 | 메아리 서버, 클라이언트 프로그램 구현 step3 메아리 서버, 클라이언트 구성 서버는 클라이언트가 보낸 메세지를 입력받아 자신의 콘솔에 출력하고, 다시 그 메세지를 클라이언트로 보내는 역할을 지속적으로 한다. 클라이언트는 스캐너로 콘솔에서 서버에 보낼 메세지를 입력받아 서버로 출력하고, 서버가 보낸 메세지를 다시 입력받아 자신의 콘솔에 출력하는 작업을 지속적으로 한다. 실행 예) Client Program 서버에 보낼 메세지 : 안녕 메아리 서버 (→enter) 서버에서 온 메세지 : 안녕 메아리 서버 *server* Server Program 12192.168.0.115 님이 입장하셨습니다. 12192.168.0.115 님 메세지 : 안녕 메아리 서버 Client Program : 스캐너로 입력받아 서버로 출력, 서버에서 보낸 메세지를 입.. 2020. 8. 4.
CODE [20.08.03/Day_18] Java SE / IO & Thread 스레드 | 파일 생성 및 이동 [ IO & Thread ] Interface /CommonInfo.java package step8; public interface CommonInfo { //public static final // MAKE_PATH : 파일을 생성하여 저장하는 directory String MAKE_PATH = "C:\\kosta203\\test\\repository"; // MUSIC_PATH : 위 경로에 저장된 파일 중 mp3 확장자를 가진 파일들만 이동시키는 directory String MUSIC_PATH = "C:\\kosta203\\test\\music"; // MOVIE_PATH : 위 경로에 저장된 파일 중 avi 확장자를 가진 파일들만 이동시키는 directory String MOVIE_PATH =.. 2020. 8. 3.
Semi Project [20.08.03/Day_18] Java SE / School Project_console_UI / IO 적용(직렬화) Main Class(실행) /TestSchoolConsoleUI.java package school.test; import java.io.IOException; import school.view.ConsoleInstUI6; public class TestSchoolConsoleUI { public static void main(String[] args) { //ConsoleInstUI2 ui = new ConsoleInstUI1(); //ConsoleInstUI2 ui=new ConsoleInstUI2(); //ConsoleInstUI3 ui=new ConsoleInstUI3(); //ConsoleInstUI4 ui=new ConsoleInstUI4(); //ConsoleInstUI5 ui=new Con.. 2020. 8. 3.
CODE[20.07.31/Day_17] Java SE / IO(Object Serialization 객체 직렬화) [ IO ] 객체 직렬화 ( Object Serialization ) java.io.Serializable 객체 직렬화 / 역직렬화 List 예제 main class 1. output 예제 : 객체 직렬화 object → file /TestObjectOutputList.java package step2; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.ArrayList; import model.Product; public class TestObjectOutputList { public .. 2020. 7. 31.
CODE [20.07.30/Day_16] Java SE / 파일 복사 붙여넣기 프로그램을 만들어보자 ! 파일 경로만 지정해주면, 파일을 복사해서 붙여넣는 application을 구현해보자 1. 텍스트 파일 버전 main class /TestCopyAndPasteService.java package step7; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; public class TestCopyAndPasteService { public static void main(String[] args) { String copyPath = "C:" + File.separator + "kosta203" + File.separator + "iotest3"+ File.separator + "test.txt"; Str.. 2020. 7. 30.
CODE [20.07.30/Day_16] Java SE / String, String Builder, String Buffer | I/O (입력과 출력) Stream 스트림 [ IO ] File java.io.File directory를 생성하는 예제 /TestFile.java import java.io.File; public class TestFile { public static void main(String[] args) { // java.io.File class : 파일을 제어하는 기능을 제공 String path = "C:" + File.separator + "kosta203"; //File.separator -> window : // File dir = new File(path); System.out.println(dir); //exists() : 존재여부 확인 System.out.println(dir.exists()); //true //isFile() : 파일인지.. 2020. 7. 30.
728x90
반응형