// education

네트워크 프로그래밍과 TCP/UDP 소켓 통신

네트워크 망을 통해 서로 다른 컴퓨터 간에 데이터를 송수신하는 TCP/IP 소켓 네트워크 프로그래밍을 배웁니다.


1. 네트워크 용어 사전 (Glossary)


2. TCP 멀티스레드 에코 서버 구현 예제

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

public class TcpEchoServer {
    public static void main(String[] args) {
        int port = 8888;
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("서버가 " + port + " 포트에서 클라이언트 접속을 대기합니다...");

            while (true) {
                Socket socket = serverSocket.accept(); // 접속 승인
                System.out.println("클라이언트 연결됨: " + socket.getInetAddress());

                // 입출력 스트림 획득
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);

                String clientMsg;
                while ((clientMsg = reader.readLine()) != null) {
                    System.out.println("수신 메세지: " + clientMsg);
                    writer.println("Echo: " + clientMsg); // 에코 응답
                }
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 자주 묻는 질문 (Q&A)

Q. TCP 통신에서 accept() 메소드는 왜 블로킹(Blocking)되나요? A. 클라이언트가 new Socket(ip, port)로 실제 접속을 시도할 때까지 스레드가 대기 상태에 들어가기 때문입니다. 클라이언트가 연결되면 통신용 Socket 객체를 리턴하며 블로킹이 해제됩니다.

← 이전JDBC 데이터베이스 연동과 SQL CRUD 실행 다음 →JDBC 데이터베이스 연동 및 SQL CRUD 실행