본문 바로가기
수업시간 JAVA/문제

서버-클라이언트 채팅 -> 종료시 txt파일로 저장, txt파일이름은 연월일현재시간

by SEOKIHOUSE 2023. 5. 10.
package practice0509Testok;

import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class ServerTest {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ServerSocket serverSocket = null;
		Socket socket1 = null;
		BufferedReader br1 = null;
		FileWriter fw1 = null;
		FileWriter fw2 = null;
		PrintWriter pw = null;

		try {
			serverSocket = new ServerSocket(9999);
			System.out.println("응답대기중...");
			socket1 = serverSocket.accept();
			System.out.println("연결되었어요..");

			br1 = new BufferedReader(new InputStreamReader(socket1.getInputStream()));
			pw = new PrintWriter(socket1.getOutputStream());

			String storeClientMsg = "";
			String storeServerMsg = "";
			while (true) {
				String client1 = br1.readLine();
				storeClientMsg += client1 + "\n";
				System.out.println("Client >>" + client1);
				if (client1.equalsIgnoreCase("bye")) {
					System.out.println("클라이언트가 채팅을 종료했습니다");
					fw1 = new FileWriter("Clientchat_" + generateFileName() + ".txt");
					fw1.write(storeClientMsg);
					fw2 = new FileWriter("Serverchat_" + generateFileName() + ".txt");
					fw2.write(storeServerMsg);
					break;
				}

				System.out.print("Server >>");
				String sendMsg = sc.nextLine();
				storeServerMsg += sendMsg + "\n";
				pw.println(sendMsg);
				pw.flush();

			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		} finally {
			try {
				sc.close();
				serverSocket.close();
				socket1.close();
				br1.close();
				pw.close();
				fw1.close();
				fw2.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	private static String generateFileName() {
		Date now = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
		String formattedDate = sdf.format(now);
		return formattedDate;
	}

}
package practice0509Testok;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class ClientTest1 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Socket socket = null;
		PrintWriter pw = null;
		BufferedReader br = null;
		try {
			socket = new Socket("localhost", 9999);
			System.out.println("서버에 접속되었습니다");
			pw = new PrintWriter(socket.getOutputStream());
			br = new BufferedReader(new InputStreamReader(socket.getInputStream()));

			while (true) {
				System.out.print("Client >> ");
				String sendMsg = sc.nextLine();
				if (sendMsg.equalsIgnoreCase("bye")) {
					pw.println(sendMsg);
					pw.flush();
					break;
				}
				pw.println(sendMsg);
				pw.flush();

				String server1 = br.readLine();
				System.out.println("Server >>" + server1);

			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				sc.close();
				socket.close();
				br.close();
				pw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}