13. Network (네트워크, 소켓프로그래밍)

네트워크(Network)는 컴퓨터들이 서로 통신하여 데이터를 주고받을 수 있는 연결된 집합을 의미합니다. 네트워크를 통해 컴퓨터들은 정보, 파일, 리소스 등을 공유하고 서비스를 제공할 수 있습니다. Java에서는 소켓 프로그래밍(Socket Programming)을 통해 네트워크 통신을 구현할 수 있습니다.

Java의 소켓 프로그래밍은 클라이언트와 서버 간의 네트워크 통신을 가능하게 합니다. 주요 개념과 사용법을 살펴보겠습니다:

1. 클라이언트-서버 모델

  • 클라이언트(Client)는 서비스를 요청하는 컴퓨터 또는 애플리케이션입니다.

  • 서버(Server)는 클라이언트의 요청을 처리하고 필요한 서비스를 제공하는 컴퓨터 또는 애플리케이션입니다.

  • 클라이언트와 서버는 네트워크를 통해 통신하며, TCP/IP 프로토콜을 사용합니다.

2. 소켓(Socket)

  • 소켓은 클라이언트와 서버 간의 통신을 담당하는 네트워크 연결의 한 종류입니다.

  • 클라이언트 소켓과 서버 소켓이 쌍으로 생성되며, 소켓을 통해 데이터를 주고받을 수 있습니다.

3. Java의 네트워크 클래스

  • Java에서는 java.net 패키지에서 네트워크 프로그래밍을 위한 클래스와 인터페이스를 제공합니다.

  • Socket 클래스는 클라이언트 소켓을 나타내고, ServerSocket 클래스는 서버 소켓을 나타냅니다.

  • 클라이언트 소켓은 서버의 IP 주소와 포트 번호로 연결을 요청하고, 서버 소켓은 클라이언트의 연결 요청을 수락합니다.

4. 예시 코드

  • 클라이언트와 서버 간의 간단한 메시지 교환 예시 코드입니다.

1)클라이언트

javaCopy codeSocket socket = new Socket("서버IP", 포트번호);

OutputStream outputStream = socket.getOutputStream();
PrintWriter writer = new PrintWriter(outputStream, true);

writer.println("Hello, Server!");

socket.close();

2)서버

javaCopy codeServerSocket serverSocket = new ServerSocket(포트번호);

Socket socket = serverSocket.accept();

InputStream inputStream = socket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

String message = reader.readLine();
System.out.println("Received message: " + message);

socket.close();
serverSocket.close();

클라이언트는 서버의 IP 주소와 포트 번호로 소켓을 생성하고, 출력 스트림을 통해 서버에 메시지를 전송합니다. 서버는 클라이언트의 연결을 수락하고, 입력 스트림을 통해 클라이언트로부터 메시지를 수신합니다.

네트워크와 소켓 프로그래밍은 클라이언트와 서버 간의 통신을 위한 핵심 개념과 기술입니다. Java의 소켓 프로그래밍을 사용하여 네트워크 통신을 구현할 수 있으며, 클라이언트와 서버 간의 데이터 교환을 통해 다양한 네트워크 기반 애플리케이션을 개발할 수 있습니다.

Last updated