1. 자바 프로젝트 생성

image.png

2. 라이브러리세팅 build.gradle

compileOnly("org.projectlombok:lombok:1.18.42")
annotationProcessor("org.projectlombok:lombok:1.18.42")
implementation("com.google.code.gson:gson:2.13.1")
implementation("mysql:mysql-connector-java:8.0.33")

3. 디비 연결

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {

    // 책임 : 데이터베이스 연결 소켓을 리턴함
    public static Connection getConnection() {
        String url = "jdbc:mysql://localhost:3306/store";
        String username = "root";
        String password = "bitc5600!";

        try {
            // new 클래스명();
            Class.forName("com.mysql.cj.jdbc.Driver");
            // conn =  프로토콜이 적용된 소켓
            Connection conn = DriverManager.getConnection(url, username, password);
            System.out.println("성공");
            return conn;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

4. 뼈대코드 작성

package com.mtcoding.ex04;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer2 {
    public static void main(String[] args) {
        try {
            ServerSocket ss = new ServerSocket(20000);
            Socket socket = ss.accept();

            InputStream in = socket.getInputStream();
            InputStreamReader ir = new InputStreamReader(in);
            BufferedReader br = new BufferedReader(ir);

            while(true){
                String line = br.readLine(); // 엔터키까지 읽기
                // 홍길동:안녕
                System.out.println("[server] "+line);
                
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

package client;

import java.io.*;
import java.net.Socket;

public class MyClient {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("localhost", 20000);

            InputStream keyStream = System.in;
            InputStreamReader keyReader = new InputStreamReader(keyStream);
            BufferedReader keyBuf = new BufferedReader(keyReader);
            OutputStream out = socket.getOutputStream();
            OutputStreamWriter ow = new OutputStreamWriter(out);
            BufferedWriter bw = new BufferedWriter(ow);

            while(true){
                String keyboardData = keyBuf.readLine();
                bw.write(keyboardData);
                bw.write("\\n");
                bw.flush();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}