πμμΌν΅μ ꡬ쑰
| Server PORT = 9090 | Client1 IP = 123. 0. 0. 1 | Client2 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 β DB | static |
| Thread2 (serverSocket) | List1 |
|---|
| S2. 무ν루ν (reader) β Controller β Sevice β Repository β DB | static |
π₯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();
PrintWriter out = new PrintWriter(outputStream,true);
out.println("join");
InputStream inputStream = socket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String welcomeMessage = in.readLine();
System.out.println(welcomeMessage);
out.println(welcomeMessage);
while(true) {
in.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
if(serverSocket != null) {
try {
serverSocket.close();
} catch (IOException e) {
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);
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() ;
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 μ€ν



