티스토리 뷰

낙서

[Java] 소켓 서버 만들기

nodeal 2018.01.19 19:30

GitHub 링크


대단한 설명이 필요할지는 모르겠다.


1. 새로운 Socket 연결이 들어오면 accept된 Socket을 새 Thread(SocketThread)에 넘기고

2. SocketThread에서는 들어온 명령어를 CLOSE만 구분하고 CLOSE가 아니라면 CommandServer에 넘기고 wait

3. CommandServer는 명령어를 구분하여 적절한 Command를 알려주고 CommandThread에 작동을 넘긴다.

4. CommandThread에서의 Command 작동 결과 (perform()의 결과)는 CommandServer의 resultList에 저장되고 기다리던 SocketThread에 notify

5. UUID를 이용하여 기다리고 있던 SocketThread는 notify되면 결과(JSONObject)를 클라이언트에게 전달


- wait과 같은 메소드의 InterruptedException은 전부 JSON 형식으로 클라이언트에게 전달, 새로운 명령을 대기

- ParseException 발생시 JSON 형식으로 클라이언트에게 전달, 새로운 명령을 대기

- Exception 발생시 전달을 시도하는 writeUTF에서 IOException 발생시 클라이언트에게 전달 없이 연결 종료


주석정도는 달아야할지 고민이지만, 나름 알아보기는 좋게 작성했다고 생각해서 굳이 주석은 안달도록 한다.

댓글
댓글쓰기 폼