본문 바로가기
728x90
반응형

JAVA SE43

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.
[20.08.05/Day_20] Java SE / Nested Class 중첩 클래스 Nested Class : 중첩 클래스 or Inner Claas → 클래스 안에 클래스를 정의 → 내부 클래스를 정의하는 이유는 Outer Class의 private member에 직접 접근해 사용할 수 있기 때문에 주로 쓴다. 사용 예제 //outer class class Outer{ private String password = "abcd"; //outer class에 inner class의 객체 생성 가능 public void outTest() { Inner in = new Inner(); in.innterTest(); } //inner class class Inner{ public void innterTest() { //Outer class의 private 변수에 직접 접근해 사용할 수 있음 S.. 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.
[20.08.04/Day_19] Java SE / Network 네트워크 ( Protocol 프로토콜 - TCP-IP & Port | Socket 소켓 ) [ Network 네트워크 ] java 기반의 TCP-IP Network Programming java.net 패키지에 주요 class들이 있다. Protocol 프로토콜 : 통신 규약(약속) TCP/IP : 인터넷 상의 통신 규약 TCP (Transmission Control Protocol) : 전송 제어 프로토콜 데이터 전달 보증 → 신뢰성이 높다. IP (Internet Protocol) : ip address(전화번호와 유사)로 호스트 주소 지정 * 자신의 ip는 cmd창에서 igconfig로 확인할 수 있다. ex) 나의 IP 주소 → 192.168.0.115 참고) DNS (Domain Name Service) : www.daum.net → ip와 연결되는 Domain name이다. Port.. 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.
[20.08.03/Day_18] Java SE / Thread 스레드 (multi thread, Daemon Thread 데몬 스레드, Thread Scheduling, Synchronized 동기화) [ Thread 스레드 ] : 프로세스 내의 세부적 실행 단위(사전적 의미는 '실') ⇒ 현재 실행 중인 프로그램의 세부적 실행단위 * process는 현재 실행중인 프로그램을 의미 ex) 예제 1. 동영상 재생 프로그램을 실행(process)한다. 영상서비스, 음향서비스, 자막서비스가 thread 로 동작된다. 예제 2. 클라이언트 프로그램 채팅 클라이언트 프로그램을 실행(process)한다. → 채팅 클라이언트 프로세스 내에 필수적인 실행단위는 두 가지이다. → 동시에 서비스되어야 하므로 멀티 스레드가 필요하다. 1. 친구들의 메세지를 입력받는 스레드 2. 친구들에게 메세지를 출력하는 스레드 예제 3. 서버 프로그램 채팅 서버 프로그램을 실행(process)한다. → 접속한 클라이언트 모두 서비스를 .. 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.
728x90
반응형