## 프로젝트 개요
실시간 채팅 기능을 갖춘 간단한 클라이언트-서버 애플리케이션을 구현하여, 엔터프라이즈 환경에서 사용 가능한 실용적인 예제를 제공합니다. 이 예제는 소켓 통신을 통해 실시간으로 메시지를 전송하고 수신하는 기능을 포함하며, 다중 클라이언트의 동시 접속도 지원합니다.
## 주요 기능
- 실시간 채팅 기능
- 멀티스레드를 이용한 클라이언트 처리
- 메시지 로그 기록
- 사용자 입력 검증 및 에러 처리
## 사용 방법
1. 서버를 실행합니다.
2. 여러 개의 클라이언트로 연결하여 채팅을 진행합니다.
3. 메시지를 입력하면 실시간으로 전송됩니다.
## 확장 가능성
- 방별 채팅 기능 추가
- 사용자 인증 및 권한 관리 시스템 구현
- 메시지 저장 및 검색 기능 도입
☕ Java로 구현한 실시간 채팅 애플리케이션
Java 예제
중급
난이도
예제
타입
11/09
등록일
Java로 구현한 실시간 채팅 애플리케이션
중급태그
코드 예제
// 서버 코드 (ChatServer.java)
import java.io.*;
import java.net.*;
import java.util.*;
public class ChatServer {
private static final int PORT = 12345;
private static Set<PrintWriter> clients = new HashSet<>();
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(PORT)) {
System.out.println("서버가 실행되었습니다. 포트: " + PORT);
while (true) {
Socket socket = serverSocket.accept();
new Thread(new ClientHandler(socket)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static class ClientHandler implements Runnable {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
public ClientHandler(Socket socket) {
this.socket = socket;
try {
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
String line;
try {
while ((line = in.readLine()) != null) {
System.out.println("받은 메시지: " + line);
broadcast(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
clients.remove(out);
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void broadcast(String message) {
for (PrintWriter client : clients) {
client.println(message);
client.flush();
}
}
}
}
// 클라이언트 코드 (ChatClient.java)
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class ChatClient {
private static final String SERVER_IP = "localhost";
private static final int PORT = 12345;
public static void main(String[] args) {
try (Socket socket = new Socket(SERVER_IP, PORT)) {
Scanner scanner = new Scanner(System.in);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
System.out.println("서버에 연결되었습니다. 메시지를 입력하세요.");
while (true) {
String message = scanner.nextLine();
if (message.equalsIgnoreCase("quit")) {
break;
}
out.println(message);
out.flush();
// 서버에서 전송된 메시지 읽기
String response = in.readLine();
System.out.println("서버: " + response);
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}
등록일: 2025년 11월 09일 02:35
언어 정보
언어
Java
카테고리
Enterprise
인기도
#3
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요