AWS BACK DAY 28. μ†ŒμΌ“ν†΅μ‹  review

μ΄κ°•μš©Β·2023λ…„ 2μ›” 9일

Java 기초

λͺ©λ‘ 보기
22/26

πŸ“Œμ†ŒμΌ“ν†΅μ‹  ꡬ쑰

Server PORT = 9090Client1 IP = 123. 0. 0. 1Client2 IP = 123. 0. 0. 2
λ¬΄ν•œλ°˜λ³΅,ν΄λΌμ΄μ–ΈνŠΈμ˜ 접속 λŒ€κΈ°β† Socket s = new Socket(Ip,Port)
↓ Client1 λ‹΄λ‹Ήμž λ°°μ • Socket 생성 (InStream,OutStream) JSON(ResponseDto) ⇆↲ νšŒμ›κ°€μž… Json(RequestDto)
↓ Client2 λ‹΄λ‹Ήμž λ°°μ • Socket 생성 (InStream,OutStream) JSON(ResponseDto) ⇆
Thread1 (serverSocket)List1
S1. λ¬΄ν•œλ£¨ν”„ (reader) β†’ Controller β†’ Sevice β†’ Repository β†’ DBstatic
Thread2 (serverSocket)List1
S2. λ¬΄ν•œλ£¨ν”„ (reader) β†’ Controller β†’ Sevice β†’ Repository β†’ DBstatic

πŸ”₯windowBuilder 볡슡

πŸ“‘Server - ServerApplication

package simplechatting.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerApplication {
	
	
	public static void main(String[] args) {
		ServerSocket serverSocket = null;
		try {
			 serverSocket = new ServerSocket(9090);
			System.out.println("====<<< μ„œλ²„ μ‹€ν–‰ >>>====");
			
			
				Socket socket = serverSocket.accept(); // ν΄λΌμ΄μ–ΈνŠΈμ˜ 접속을 κΈ°λ‹€λ¦¬λŠ” 녀석 // μ—°κ²°λ²„νŠΌ λˆ„λ₯Όλ•Œ κΉŒμ§€
				
				OutputStream outputStream = socket.getOutputStream(); //clientμ—κ²Œ ν†΅λ‘œλ₯Ό μ—΄μ–΄μ€Œ
				PrintWriter out = new PrintWriter(outputStream,true);
				out.println("join"); //clientμ—κ²Œ 전달
				
				InputStream inputStream = socket.getInputStream();  // λ“€μ–΄μ˜¬ 문을 μ—΄μ–΄μ€Œ
				BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
				
				String welcomeMessage = in.readLine(); 
				System.out.println(welcomeMessage);  //server console μ°½
				out.println(welcomeMessage); //ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λŒλ €μ£ΌλŠ” μš©λ„				
				
				while(true) {  //μ„œλ²„ μ•ˆκΊΌμ§€κ²Œ ν•˜λŠ” μš©λ„ 
				in.readLine();	
				}
				
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			if(serverSocket != null) {
				try {
					serverSocket.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
			System.out.println("====<<< μ„œλ²„ μ’…λ£Œ >>>====");
			
		}
	}

}

πŸ“‘Client - ChattingClinet

package simplechatting.client;

import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

public class ChattingClient extends JFrame {
	
	
	
	private Socket socket;
	private String username;
	
	

	private JPanel contentPane;
	private JTextField ipInput;
	private JTextField portInput;
	private JTextArea contentView;

	
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ChattingClient frame = new ChattingClient();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	
	public ChattingClient() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 587, 444);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		ipInput = new JTextField();
		ipInput.setBounds(337, 11, 97, 32);
		contentPane.add(ipInput);
		ipInput.setColumns(10);
		
		JButton connectButton = new JButton("μ—°κ²°");
		connectButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				String ip = null;   // ν…μŠ€νŠΈ ν•„λ“œμ— μžˆλŠ” 값을 κ°€μ Έμ˜΄
				int port = 0; // ν…μŠ€νŠΈ ν•„λ“œμ— μžˆλŠ” 값을 κ°€μ Έμ˜΄
				
				ip = ipInput.getText();
				port = Integer.parseInt(portInput.getText());
				
				try {
					
					socket = new Socket(ip, port);   //client β†’ serverλ‹¨μ˜ serverSocket.accept(); μ—κ²Œ 전달
					JOptionPane.showMessageDialog(null, 
							socket.getInetAddress() + "μ„œλ²„ 접속" , 
							"접속성곡",
							JOptionPane.INFORMATION_MESSAGE);
					
					InputStream inputStream = socket.getInputStream(); // μ„œλ²„λ‘œλΆ€ν„° 올 λ©”μ‹œμ§€ ν†΅λ‘œλ₯Ό μ—΄μ–΄μ€Œ
					BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
					
					if(in.readLine().equals("join")) {
						username = JOptionPane.showInputDialog(null,"μ‚¬μš©μž 이름을 μž…λ ₯ν•˜μ„Έμš”.",JOptionPane.INFORMATION_MESSAGE);
						
						OutputStream outputStream = socket.getOutputStream();  // μ„œλ²„μ—κ²Œ 갈 ν†΅λ‘œλ₯Ό μ—΄μ–΄μ€Œ
						PrintWriter out = new PrintWriter(outputStream,true);	
						
						out.println(username + "λ‹˜μ΄ μ ‘μ†ν•˜μ˜€μŠ΅λ‹ˆλ‹€."); // μ„œλ²„λ‘œ 전달
						
						String welcomMessage = in.readLine() ; //serverλ‹¨μ˜ welcomeMessage
						contentView.append(welcomMessage);
						
					}
					
					
				}catch (ConnectException e1) {
					
					JOptionPane.showMessageDialog(null, 
							"μ„œλ²„ 접속 μ‹€νŒ¨" , 
							"μ ‘μ†μ‹€νŒ¨",
							JOptionPane.ERROR_MESSAGE);
				}catch (UnknownHostException e1) {
					e1.printStackTrace();
				}catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		connectButton.setBounds(501, 10, 65, 33);
		contentPane.add(connectButton);
		
		portInput = new JTextField();
		portInput.setBounds(446, 11, 43, 32);
		contentPane.add(portInput);
		portInput.setColumns(10);
		
		JScrollPane contentScroll = new JScrollPane();
		contentScroll.setBounds(12, 10, 313, 358);
		contentPane.add(contentScroll);
		
		contentView = new JTextArea();
		contentScroll.setViewportView(contentView);
		
		JScrollPane userListScroll = new JScrollPane();
		userListScroll.setBounds(337, 53, 222, 315);
		contentPane.add(userListScroll);
		
		JTextArea userList = new JTextArea();
		userListScroll.setViewportView(userList);
		
		JScrollPane messageScroll = new JScrollPane();
		messageScroll.setBounds(12, 378, 488, 23);
		contentPane.add(messageScroll);
		
		JTextArea messageInput = new JTextArea();
		messageScroll.setViewportView(messageInput);
		
		JButton sendButton = new JButton("전솑");
		sendButton.setBounds(505, 378, 61, 23);
		contentPane.add(sendButton);
	}
}

πŸ“‘Client - ChattingClient(Design)

ServerApplication μ‹€ν–‰ β†’ CahttingClient μ‹€ν–‰

0개의 λŒ“κΈ€