간단한 채팅 앱 개발하기

Thread 기반의 채팅 서버/클라이언트 만들기

채팅 서버 생성

ChatServerThread.java

package chatting;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatServerThread {

    private Socket socket=null;
    private ServerSocket server = null;
    int connectCount=0;

    public void serverStart(){
        System.out.println("접속자를 기다리는 중입니다.");
        try {
            server = new ServerSocket(2022);
            socket = server.accept();
            
            InetAddress ia = socket.getInetAddress();
            int port = socket.getLocalPort();// 접속에 사용된 PORT 
            String ip = ia.getHostAddress(); // 원격 Client IP 
            
            ++connectCount;  //접속자수 카운트
            System.out.print(connectCount);
            System.out.print("클라이언트 접속-Local Port: "+ port);
            System.out.println(" Client IP: " + ip);
            
            //데이터를 읽어오는 스레드
            ChatServerReadHandler read = new ChatServerReadHandler(socket);
            read.start();
            //데이터를 보내는 스레드
            ChatServerSendHandlersend = new ChatServerSendHandler(socket);
            send.start();
        } catch(IOException ioe) {
            System.err.println("연결이 되어 있지 않습니다.");
        } finally {
            try {
                server.close();
            } catch(IOException ignored) {}
        }
        
    }

    public static void main(String[] args) {
        ChatServerThread cs = new ChatServerThread();
        cs.serverStart();
    }
}

ChatServerReadHandler.java

  • 데이터를 읽어오는 ReadHandler 생성

  • 데이터를 보내는 SendHandler 생성

ChatServerSendHandler.java

채팅 클라 생성

ChatClientThread.java

  • 데이터를 읽어오는 클라이언트 ReadHandler 생성

  • 데이터를 보내는 클라이언트 SendHandler 생성

실행 하기

  • CMD 를 실행합니다.

멀티 채팅 앱 구현하기.

멀티 채팅 서버 생성

ChatServerThreadMulti.java

  • ReadHandler 생성

ChatServerReadHandler.java

멀티 채팅 클라 생성

ChatClientThreadMulti.java

  • 클라이언트 ReadHandler 생성

ChatClientReadHandler.java

  • 클라이언트 SendHandler 생성

ChatClientSendHandler.java

실행 하기

Last updated