java
1:1 양방향 통신(채팅 기본 기능 구현)
병호네
2024. 5. 22. 16:45
💡멀티 스레드 활용💡
양방향 통신을 지속적으로 수행하기 위해 서버와 클라이언트 모두에서 키보드 입력을 받아 상대방에게 데이터를 보내고 받을 수 있도록 스레드와 while문을 활용하여 코드를 작성해봅시다.
서버 측 코드
- ServerSocket 을 생성하고 클라이언트의 연결을 기다립니다.
- BufferedReader 를 사용하여 클라이언트로부터 메시지를 읽고, PrintWriter를 사용하여 클라이언트에게 메시지를 보냅니다.
- 키보드 입력을 받기 위해 BufferedReader를 사용합니다.
- 클라이언트로부터 데이터를 읽는 스레드와 키보드 입력을 클라이언트로 보내는 스레드를 각각 실행합니다.
Thread의 join() 메서드 - 역할과 기능
- 스레드 동기화: join() 메서드를 사용하여 여러 스레드가 순서대로 종료되도록 할 수 있습니다. 메인 스레드는 join() 메서드를 호출한 스레드가 작업을 마칠 때까지 기다립니다.
- 프로그램 흐름 제어: join() 메서드를 통해 스레드가 완료되기 전까지 메인 스레드가 종료되지 않도록 보장할 수 있습니다. 이는 프로그램이 모든 작업을 완료하기 전에 종료되는 것을 방지합니다.
- 정확한 종료 시점: join() 메서드를 사용하면 특정 스레드가 완료되기 전까지 다른 작업을 진행하지 않도록 제어할 수 있습니다. 이를 통해 정확한 종료 시점을 확인할 수 있습니다.
클라이언트 측 코드
- Socket 을 생성하여 서버에 연결합니다.
- BufferedReader를 사용하여 서버로부터 메시지를 읽고, PrintWriter를 사용하여 서버에게 메시지를 보냅니다.
- 키보드 입력을 받기 위해 BufferedReader를 사용합니다.
- 서버로부터 데이터를 읽는 스레드와 키보드 입력을 서버로 보내는 스레드를 각각 실행합니다.