언어공부/Java

자바 - 멀티 스레드를 이용한 에코 서버 & 클라이언트 작성

yeony 2021. 7. 3. 23:38

자바 - 멀티 스레드를 이용한 에코 서버 & 클라이언트 작성에 대해서 알아보자

멀티 스레드를 이용한 에코 서버 & 클라이언트 

스레드는 main스레드와 EchoServerThread 스레드로 나뉘게 된다.

 

  • main 스레드: 클라이언트의 접속 요청을 기다리는 스레드
  • EchoServerThread 스레드 : 클라이언트와 연결된 소켓 객체로부터 io를 얻어 데이터 송수신을 하는 스레드

에코서버의 메인스레드는 accept()로 대기하고 있다가 클라이언트가 접속하게 되면 accept하면서 socket객체를 반환한다. 반환한 소켓을 EchoServerThread의 생성자로 넘겨주면서 EchoServerThread 객체를 생성하고 에코 서버의 메인 스레드는 다시 accept()로 대기하고 있는다. 여기서 생성된 EchoServerThread가 클라이언트와 데이터 송수신을 하게된다.

 

 


멀티스레드를 이용한 에코 서버 만들기

 

 

실행화면

 


에코 클라이언트 만들기

(전 포스팅의 에코 클라이언트와 같다)

 

 

클라이언트 실행 시 서버가 먼저 실행되어 있어야 한다. (또한 서버와 클라이언트의 포트번호가 같아야한다.)

 

클라이언트만 실행될 때 연결 오류

 

서버 먼저 실행 후 클라이언트 실행

 


 

 

멀티 스레드로 여러 클라이언트의 접속을 받으며 데이터 송수신을 할 수 있다.

 

 

클라이언트가 입력한 내용은 서버에서 확인 가능하다.