[ java] Socket & Tread를 이용하여 1대1 채팅 프로그램 만들기

 

Socket & Tread를 이용하여 1대1 채팅 프로그램 만들기

 

 

Socket & Tread를 이용하여 java로 만든 console에서 작동하는 채팅 프로그램입니다.

Server와 Client를 하나씩 만들어주고, Server와 Client가 서로 대화할 수 있습니다.

Read용 Tread를 하나 만들고, Write용 Tread를 하나 만들어 사용합니다.

 

 

 

ChatServer

package ChattingOneByOne;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ChatServer {
    public static void main(String[] args) {
        // 서버 소켓
        ServerSocket serverSocket;

        InputStream inputStream;
        InputStreamReader reader;
        BufferedReader br;

        OutputStream outputStream;
        PrintStream printStream;

        try {
            // 80번 포트로 서버 실행
            serverSocket = new ServerSocket(80);

            // 클라이언트가 접속하면 접속을 허용하는 코드
            // clientSocket에 클라이언트와의 연결 정보 저장
            Socket clientSocket = serverSocket.accept();
            outputStream = clientSocket.getOutputStream();
            printStream = new PrintStream(outputStream);
            inputStream = clientSocket.getInputStream();

            reader = new InputStreamReader(inputStream, "UTF-8");
            br = new BufferedReader(reader);

            ReadThread readThread = new ReadThread(br);
            readThread.start();

            WriteThread writeThread = new WriteThread(printStream);
            writeThread.start();

            System.out.print("채팅이 시작되었습니다\n");

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

 

 

ChatClient

package ChattingOneByOne;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class ChatClient {
    public static void main(String[] args) {
        Socket clientSocket;
        InputStream inputStream;
        InputStreamReader reader;
        BufferedReader br;

        OutputStream outputStream;
        PrintStream printStream;

        try {
            clientSocket = new Socket("192.168.0.19", 80);

            outputStream = clientSocket.getOutputStream();
            printStream = new PrintStream(outputStream);
            inputStream = clientSocket.getInputStream();
            reader = new InputStreamReader(inputStream, "UTF-8");
            br = new BufferedReader(reader);

            ReadThread readThread = new ReadThread(br);
            readThread.start();

            WriteThread writeThread = new WriteThread(printStream);
            writeThread.start();

            System.out.print("채팅이 시작되었습니다\n");

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

 

 

ReadThread

package ChattingOneByOne;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ReadThread extends Thread{

    BufferedReader br;
    public ReadThread(BufferedReader br2) {
        br = br2;
    }

    @Override
    public void run() {
        try {
            while(true) {
                String result;
                result = br.readLine();
                System.out.println(result);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

 

 

WriteThread

package ChattingOneByOne;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class WriteThread  extends Thread{

    PrintStream printStream;
    public WriteThread(PrintStream printStream2) {
        printStream = printStream2;
    }

    public void run() {
        Scanner sc = new Scanner(System.in);

        while(true) {
            String message;
            message = sc.nextLine();
            printStream.println(message);
        }
    }
}

 

 

 

 

 

 

 

https://joygotohome.tistory.com/71

 

Socket & Thread를 활용하여 다중 채팅 프로그램 만들기 - java

Socket & Thread를 활용하여 채팅 프로그램 만들기   소켓과 스레드를 활용하여 java로 만든 console에서만 출력되는 채팅프로그램 입니다.기본 문법만 사용하여 만든것으로 Socket과 Tread 사용해

joygotohome.tistory.com

1대1 채팅을 발전시켜 만든 다중 채팅프로그램