NOOWGNAJ 2022. 6. 28. 23:09
반응형

SERVER

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {

	public static void main(String[] args) {
		ServerSocket ss = null;
		Socket sc = null;
		InputStream is = null;
		OutputStream os = null;
		int port = 9091;
		Scanner in_msg = null;
		String server_msg = null;
		String message = null;
		String user_id = null;
		String exit_msg = null;
		
		try {
			ss = new ServerSocket(port);
			System.out.println("서버에서 사용하실 아이디를 입력해주세요.");
			in_msg = new Scanner(System.in);
			user_id = in_msg.nextLine();
			System.out.println("서버 연결 대기중..");
			
			sc = ss.accept();
			System.out.println("연결 확인");
			is = sc.getInputStream();
			os = sc.getOutputStream();
			
			byte data[] = new byte[1024];
			
			while (true) {

				int n = is.read(data);
				message = new String(data,0,n);
				
				if(message.indexOf(":") == -1 ) {
					System.out.println(message + "님이 퇴장하셨습니다.");
					System.exit(0);
				}
				else {
					System.out.println(message);
				}

				System.out.println("내용 입력");
				server_msg = "[SERVER - " + user_id + "] : " + in_msg.nextLine();
				os.write(server_msg.getBytes());
				os.flush();
			}
		}catch(Exception e) {
			
			System.out.println("SERVER ERROR");
		}
	}
}

 

 

 

CLIENT

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {

	public static void main(String[] args) {
		String ip = "192.168.50.62";
		int port = 9091;
		Scanner sn = null;
		Scanner sn1 = null;
		Socket sc = null;
		OutputStream os =null;
		InputStream is = null;
		String userid = "";
		String msg ="";
		
		
		try {
			sc = new Socket(ip, port);
			sn1 = new Scanner(System.in);
			System.out.println("채팅에 사용하실 아이디를 입력해주세요.");
			
			userid = sn1.nextLine();
			os = sc.getOutputStream();
			is = sc.getInputStream();
			
			
			for (;;) { //지속적으로 소켓에 계속 접속되도록 하는 형태
				sn = new Scanner(System.in);
				System.out.println("내용 입력");
				
				msg =  "[CLIENT - " + userid+"] : "+sn.nextLine();
			
				if((msg.indexOf("exit"))!=-1) {
					os.write(userid.getBytes());
					System.out.println("채팅이 종료되었습니다.");
					System.exit(0);
					
				}
				else {
				
				os.write(msg.getBytes());
				os.flush();

				byte[] data = new byte[1024];
				int n = is.read(data);
				String message = new String(data, 0, n);
				System.out.println(message);
				}
			}



		} catch (Exception c) {
			System.out.println(c.getMessage());
			if ((c.getMessage()) != null) {
				System.out.println("현재 접속 장애가 발생함");
				
			}
		}
		finally { //클라이언트가 접속 종료 시 해당 소켓 및 각종 Stream, Scanner등을 모두 종료
			try {
				sc.close();
				os.close();
				is.close();
				sn.close(); //접속 종료 시 체크
			} catch (Exception e) {
				
				
			}
		}
	}

}
반응형