// education

자바 소켓(Socket) 네트워크 프로그래밍

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


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


2. TCP 소켓 서버 / 클라이언트 동작 4단계

[Server] ServerSocket(port) 생성 및 accept() 대기
[Client] Socket(ip, port) 생성으로 연결 요청
[Server] accept() 승인으로 클라이언트 통신용 Socket 생성
[Both]   InputStream / OutputStream으로 데이터 고속 송수신

3. TCP 멀티스레드 에코 서버 파이썬/자바 코드

// 서버 단 코드 (EchoServer.java)
import java.io.*;
import java.net.*;

public class EchoServer {
    public static void main(String[] args) {
        int port = 9999;
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("에코 서버가 " + port + " 포트에서 수신 대기 중...");

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

                // 입출력 스트림 연결
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

                String msg;
                while ((msg = in.readLine()) != null) {
                    System.out.println("수신 메세지: " + msg);
                    out.println("Echo: " + msg); // 메세지 되돌려주기
                }
                socket.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

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

Q. TCP와 UDP 통신의 주요 차이는 무엇인가요? A. TCP는 연결 수립 과정(3-Way Handshake)을 거쳐 신뢰성 높은 데이터를 전송하며, UDP는 연결 수립 없이 빠른 속도로 조각을 던지는 비연결형(Connectionless) 프로토콜입니다. (실시간 스트리밍/게임에는 UDP 선호)

← 이전자바 GUI 스윙(Swing) 컴포넌트와 이벤트 처리 다음 →JDBC 데이터베이스 연동과 SQL CRUD 실행