🔍 내가 배운 내용 요약


  1. 네트워크란 컴퓨터끼리 데이터를 주고받는 통신망
  2. 자바는 TCP/IP 소켓 통신을 지원
  3. 서버는 ServerSocket 으로 클라이언트 요청을 기다리고, 클라이언트는 Socket 으로 서버에 접속
  4. 입출력 스트림을 통해 데이터 송수신
  5. 멀티스레드 서버 구현으로 여러 클라이언트 동시 처리 가능

📚 주요 클래스

클래스 역할
Socket 클라이언트 측 소켓 생성 및 통신
ServerSocket 서버 소켓 생성, 클라이언트 연결 대기
InetAddress IP 주소 관리
URL, URLConnection HTTP 등 프로토콜을 통한 통신 지원

✅ TCP 서버 예제

Java

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

public class TCPServer {
    public static void main(String[] args) {
        try (ServerSocket server = new ServerSocket(12345)) {
            System.out.println("서버 대기 중...");
            Socket client = server.accept();  // 클라이언트 연결 대기
            System.out.println("클라이언트 접속: " + client.getInetAddress());

            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
            BufferedWriter out = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));

            String line;
            while ((line = in.readLine()) != null) {
                System.out.println("받은 메시지: " + line);
                out.write("서버 응답: " + line + "\\n");
                out.flush();
            }

            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

✅ TCP 클라이언트 예제

Java

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

public class TCPClient {
    public static void main(String[] args) {
        try (Socket socket = new Socket("localhost", 12345);
             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
             BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
             BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in))) {

            String input;
            System.out.println("서버에 메시지 입력 (종료하려면 'exit' 입력)");
            while (!(input = keyboard.readLine()).equalsIgnoreCase("exit")) {
                out.write(input + "\\n");
                out.flush();

                String response = in.readLine();
                System.out.println("서버로부터: " + response);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

📚 네트워크 통신 기본 흐름

  1. 서버: ServerSocket 생성 → accept() 로 클라이언트 연결 대기