TIL 18.

Sol Karsian·2025년 3월 6일

☀️ TIL - Java 18일차: 객체 입출력, 네트워크, 소켓 프로그래밍 정리
오늘은 자바의 객체 입출력 보조 스트림, 직렬화/역직렬화, 그리고 네트워크 개념 및 TCP/UDP 소켓 프로그래밍을 정리했습니다.
직렬화를 통해 객체를 파일로 저장하고, 서버-클라이언트 간 통신 흐름을 학습했습니다.

💾 1. 객체 입출력 보조 스트림
✅ 객체 입출력 개요
객체를 파일이나 네트워크로 전송/저장 가능하게 해주는 스트림

반드시 바이트 기반 스트림 사용

직렬화가 필수

🔄 직렬화 (Serialization)
객체 → 바이트 형태로 변환

Serializable 인터페이스 구현 필수

transient 키워드로 특정 필드는 직렬화 제외 가능

java
복사
편집
private static final long serialVersionUID = -6423919775137290062L;
🔁 역직렬화 (Deserialization)
바이트 → 객체 복원

직렬화한 클래스와 동일한 클래스 구조여야 성공

📦 객체 입출력 예시
java
복사
편집
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("data.dat"));
oos.writeObject(new Student("홍길동", 20));
oos.close();

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("data.dat"));
Student s = (Student) ois.readObject();
🌐 2. 네트워크(Network)
📡 개념
컴퓨터 간 데이터를 주고받기 위한 연결 구조

종류 설명
LAN 근거리 네트워크
WAN 국가/대륙 단위
MAN 도시 단위
PAN 개인 네트워크 (Bluetooth, 핫스팟 등)
📥 서버와 클라이언트
서버: 서비스 제공

클라이언트: 서비스 요청

통신 시 IP 주소와 Port 필요

🧾 주요 용어

용어 설명
IP 주소 컴퓨터 식별 번호
Port 프로그램 식별 번호 (0~65535 중 1024 이상 사용 권장)
Protocol 데이터 송수신 규칙
⚙️ 3. 소켓 프로그래밍
🧩 소켓(Socket)
프로세스 간 통신에 사용되는 양 끝단

자바에서는 Socket, ServerSocket 클래스를 사용

🔁 TCP (Transmission Control Protocol)
연결지향, 신뢰성 보장, 순서 보장

오류 발생 시 재전송

자바에서 Socket, ServerSocket 사용

java
복사
편집
// 서버
ServerSocket server = new ServerSocket(3000);
Socket client = server.accept(); // 클라이언트 연결 수락

// 클라이언트
Socket socket = new Socket("127.0.0.1", 3000);
⚡ UDP (User Datagram Protocol)
비연결 지향, 빠른 전송

신뢰성 낮음 (재전송 없음)

자바에서 DatagramSocket, DatagramPacket 사용

java
복사
편집
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
socket.send(packet);
🧪 4. TCP/IP 4계층 모델

계층 설명 프로토콜
응용 계층 사용자와 직접 상호작용 HTTP, FTP
전송 계층 송수신 신뢰성 보장 TCP, UDP
인터넷 계층 주소지정, 라우팅 IP
네트워크 접근 계층 실제 물리적 전송 Ethernet
💡 정리하며
객체 입출력 시 반드시 직렬화를 구현해야 하며, serialVersionUID 지정 권장

네트워크는 IP + Port 개념을 바탕으로 서버/클라이언트 구조를 가진다

TCP는 신뢰성, UDP는 속도에 중점을 둔 통신 방식

소켓 프로그래밍을 통해 직접 데이터를 송수신하는 구조를 구현 가능

profile
개발자 희망자 입니다.

0개의 댓글