본문 바로가기
JAVA/개념정리

[JAVA] 채팅프로그램

by JJH0100 2022. 10. 31.
728x90
반응형

ServerEx. class

package Ex02;

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

public class ServerEx {

	public static void main(String[] args) {
		BufferedReader in = null;
		BufferedWriter out = null;
		
		ServerSocket server = null;
		Socket socket = null;
		Scanner sc = new Scanner(System.in);
		
		try {
			server = new ServerSocket(9001); //서버 소켓 생성
			System.out.println("연결을 기다립니다.");
			socket = server.accept(); //소켓 연결
			System.out.println("연결 되었습니다.");
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			while(true) {
				String inputMessage = in.readLine(); //클라이언트로부터 한 행 읽기
				if(inputMessage.equals("bye")) {
					System.out.println("클라이언트가 종료되었습니다.");
					break;
				}
				System.out.println("클라이언트 : " + inputMessage);

				System.out.println("보내기 >> ");
				String outputMessage = sc.nextLine();
				out.write(outputMessage + "\n"); //키보드에서 읽은 문자열 전송
				out.flush(); //out 스트림 버퍼에 있는 모든 문자열 전송
			}
		} catch (Exception e) {
			System.out.println("채팅에 문제가 있습니다.");
		}finally {
			sc.close();
			if(socket != null) {
				try {
					socket.close();
					server.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
}

 

ClientEx.class

package Ex02;

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

public class ClientEx {

	public static void main(String[] args) {
		BufferedReader in = null;
		BufferedWriter out = null;
		Socket socket = null;
		Scanner sc =  new Scanner(System.in);
		
		try {
			socket = new Socket("IP주소", 9001); //통신을 위한 클라이언트 소켓 생성
			in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			while(true) {
				System.out.println("메세지 입력 >> ");
				String outputMessage = sc.nextLine();
				if(outputMessage.equals("bye")) {
					out.write(outputMessage);
					out.flush();
					break;
				}
				out.write(outputMessage + "\n");
				out.flush();
				String inputMessage = in.readLine();
				System.out.println("서버 : " + inputMessage);
			}
		} catch (Exception e) {
			System.out.println("채팅에 오류가 있습니다.");
		}finally {
			sc.close();
			if(socket != null) {
				try {
					socket.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

 

IP주소 부분에는 서버의 IP주소 값이 들어가야한다

728x90
반응형

'JAVA > 개념정리' 카테고리의 다른 글

[JAVA] insert values  (0) 2022.11.02
[JAVA] 오라클 연동  (0) 2022.11.02
[JAVA] BufferedReader와 Bufferedwriter  (0) 2022.10.28
[JAVA] HashMap<K,V>  (0) 2022.10.27
[JAVA] 특수 문자 표기법  (0) 2022.10.26

댓글