소켓이란 무엇인가?
소켓은 네트워크 상에서 데이터를 주고받기 위해 만들어진 통로예요.
서버와 클라이언트는 소켓을 통해 서로 연결되고 데이터를 주고받아요.
예를 들면,
우리가 웹 브라우저에서 사이트에 접속할 때도 이 소켓 연결이 사용돼요!
■ TCP와 UDP의 차이점
- TCP (Transmission Control Protocol)
- 데이터의 신뢰성 보장.
- 손실된 데이터는 재전송하며, 모든 데이터가 순서대로 도착하는 걸 보장해요.
- 속도는 느리지만 안정적이에요. 예: 웹 브라우징, 이메일.
- UDP (User Datagram Protocol)
- 데이터의 손실에 민감하지 않아요. 재전송을 하지 않으니 빠른 속도가 장점이에요.
- 예: 스트리밍 서비스, 게임.
서버와 클라이언트 구조 이해하기
- 서버: 서비스를 제공하는 프로그램(예: 웹 서버).
- 클라이언트: 서버에 요청을 보내는 프로그램(예: 브라우저).
서버는 항상 대기하고 있다가 클라이언트가 요청을 보낼 때 응답해요.
■ 간단한 예 . TCP 서버와 클라이언트 구현
● TCP 서버 코드 (Java)
import java.net.*; import java.io.*; public class TCPServer { public static void main(String[] args) { try (ServerSocket serverSocket = new ServerSocket(8080)) { System.out.println("서버가 시작되었습니다."); while (true) { Socket clientSocket = serverSocket.accept(); BufferedReader in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream())); PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); String clientMessage = in.readLine(); System.out.println("클라이언트: " + clientMessage); out.println("서버 응답: " + clientMessage.toUpperCase()); clientSocket.close(); } } catch (IOException e) { e.printStackTrace(); } } } |
● TCP 클라이언트 코드 (Java)
import java.net.*; import java.io.*; public class TCPClient { public static void main(String[] args) { try (Socket socket = new Socket("localhost", 8080)) { PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream())); out.println("Hello, Server!"); System.out.println("서버 응답: " + in.readLine()); } catch (IOException e) { e.printStackTrace(); } } } |
소켓 통신의 기본을 쉽게 설명하면서 직접 코딩해볼 수 있도록 설계됐어요.
네트워크 프로그래밍이 처음엔 복잡하게 느껴질 수 있지만,
하나씩 구현해 보면 의외로 재미있고 실용적이라는 걸 느끼게 될 거예요!
반응형
'IT > 자바 Java' 카테고리의 다른 글
자바로 만드는 멀티스레드 채팅 서버 만들기 (0) | 2024.11.29 |
---|---|
게임 개발의 필수! UDP 소켓에서의 통신 이해하기 (0) | 2024.11.28 |
자바와 PostgreSQL 연결하기 . 데이터베이스 연동 기초 (0) | 2024.11.26 |
자바 스레드와 동기화 쉽게 이해하기 . 실습으로 배우는 병렬 처리 (0) | 2024.11.25 |
자바로 안전한 코드 작성하기 . 예외 처리와 파일 입출력 (0) | 2024.11.24 |
댓글