일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ssh
- Redux
- 2638번 치즈
- 기지국 설치 js
- 자바스크립트
- 알고리즘
- 프로그래머스
- 우선순위 큐 자바스크립트
- JavaScript
- 백준 1068번 트리
- 힙 자바스크립트
- 리덕스
- 2275번
- 1303번
- level1
- 백준 1068
- 백준
- React
- 24480번
- dfs
- 1937번 욕심쟁이 판다
- 1389번 케빈 베이컨의 6단계 법칙
- 백준 2638번
- Java
- 알고리즘 수업-깊이 우선 탐색1
- 기지국 설치 자바스크립트
- 백준 13023번
- 부녀회장이 될 테야
- level0
- 13023번 ABCDE
- Today
- Total
코딩왕랄프👊🏻
[오픈소스] 2. Chat 소스 분석 1 본문
1. Chat 프로그램에서 사용할 수 있는 명령어
- /to : 귓속말
- /quit : 프로그램을 종료한다.
2. Chat 소스에 사용된 class
-ServerSocket (https://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html) : 자바에서 서버 프로그램을 개발할 때 쓰이는 클래스이다.
-HashMap (https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html) : 키와 데이터 값의 한쌍으로 묶어서 관리하며 키의 중복을 허용하지 않는다.
-Socket (https://docs.oracle.com/javase/7/docs/api/https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html) : client에서 서버로 접속하거나 Server에서 accpet하는데 필요한 클래스이다.
-BufferedReader (https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html) : 문자 입력 스트림으로부터 문자들을 읽어 들이는데, 버퍼링을 함으로써 문자, 문자배열, 문자열 라인 등을 보다 효율적으로 읽어 들일 수 있게 해준다.
-PrintWriter (https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html) : Print(), Println() 메소드를 사용해 출력을 편리하게 사용할 수 있도록 만든 클래스이다.
2. Chat 소스에 사용된 function
-broadcast : 유저에게 메시지를 보내는 역할을 한다.
-synchronized : 자신이 포함된 객체에 lock을 건다. 따라서 동기화 문제를 해결한다. 동기화는 객체에 대한 동기화로 이루어지는데, 같은 객체에 대한 모든 동기화 블록은 한 시점에 오직 한 쓰레드만이 블록 안으로 접근하도록 한다. 블록에 접근을 시도하는 다른 쓰레드들은 블록 안의 쓰레드가 실행을 마치고 블록을 벗어날 때까지 블록상태가 된다.
-run : 스트링을 읽어, quit이면 종료하고, to이면 sendmsg함수를 실행하고, 그렇지않으면 broadcast함수를 실행하는 등 그에 맞는 단계를 실행한다.
-sendmsg : HashMap에 저장 되어있는 Client에게 전송한다.