[Java] 아주 간단한 채팅 (TCP)

merci·2022년 12월 30일
// 서버
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ReadServ {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("서버 시작, 연결 대기중..");
		try (ServerSocket ser = new ServerSocket(5001);
			Socket soc = ser.accept();
			BufferedReader buf = new BufferedReader(
            					new InputStreamReader(soc.getInputStream()));
			PrintWriter pr = new PrintWriter(soc.getOutputStream(),true)) {
			
			System.out.println("서버가 열렸습니다.");
			while (true) {
				String instr = buf.readLine();
				if (instr.equalsIgnoreCase("quit")) {
					System.out.println("클라이언트 나감");
					break;
				}
				System.out.println("받은 메세지 : " + instr);
				System.out.print("서버 : ");
				String str = sc.nextLine();
				pr.println(str);
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
// 클라이언트
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class ClientText {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		try (Socket soc = new Socket("localhost", 5001);
			BufferedReader buf = new BufferedReader(
            					new InputStreamReader(soc.getInputStream()));
			PrintWriter buw = new PrintWriter(soc.getOutputStream(),true)) {
			
			System.out.println("연결되었습니다. 메세지 전송가능");
			while (true) {
				System.out.print("나 : ");
				String mes = sc.nextLine();
				if (mes.equalsIgnoreCase("quit")) {
					buw.write(mes + "\n");
					System.out.println("클라이언트가 채팅창에서 나갑니다.");
					break;
				}
				System.out.println(mes);
				buw.println(mes);
				String inread = buf.readLine();
				System.out.println("받은 메세지 : " + inread);
			}
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
// 서버 콘솔에서
서버 시작, 연결 대기중..
서버가 열렸습니다.
받은 메세지 : 안녕
서버 : 너도 안녕
받은 메세지 : 그럼 이만
서버 : 그래
클라이언트 나감
profile
작은것부터

0개의 댓글