자바에서 클라이언트-서버 모델을 구현하는 것은 네트워크 프로그래밍의 핵심입니다. 클라이언트는 서비스를 요청하고, 서버는 해당 요청에 응답하는 구조를 가지고 있습니다. 이를 통해 분산 시스템에서 효과적인 통신이 가능해집니다.
자바에서 클라이언트와 서버를 구현하기 위해서는 소켓(Socket)을 사용합니다. 소켓은 네트워크를 통한 데이터 통신을 담당하는 역할을 합니다. 아래에서 간단한 예제를 통해 클라이언트와 서버의 구현 방법을 살펴보겠습니다.
클라이언트(Client) 구현
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 서버에 연결
Socket socket = new Socket("서버 IP", 포트 번호);
// 소켓에서 입출력 스트림 얻기
OutputStream outputStream = socket.getOutputStream();
PrintWriter writer = new PrintWriter(outputStream, true);
// 서버에 메시지 보내기
writer.println("Hello, Server!");
// 소켓 닫기
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
서버(Server) 구현
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 서버 소켓 생성
ServerSocket serverSocket = new ServerSocket(포트 번호);
System.out.println("서버 대기 중...");
// 클라이언트 연결 대기
Socket clientSocket = serverSocket.accept();
System.out.println("클라이언트 연결됨");
// 클라이언트로부터 메시지 읽기
InputStream inputStream = clientSocket.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String message = reader.readLine();
System.out.println("클라이언트로부터 받은 메시지: " + message);
// 소켓 닫기
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
클라이언트는 Socket을 사용하여 서버에 연결하고, 서버는 ServerSocket을 사용하여 클라이언트의 연결을 수락합니다. 데이터 전송은 입출력 스트림을 통해 이루어집니다. 위의 예제에서는 텍스트 기반의 데이터를 주고받는 간단한 통신을 보여주고 있습니다.
참고 사항
- 서버와 클라이언트는 동일한 프로토콜을 사용하여 통신해야 합니다.
- 실제로는 예외 처리, 멀티스레딩, 보안 등 다양한 측면에서 고려해야 할 사항이 있습니다.
- 서버의 IP 주소는 실제 서버의 IP 주소로 변경해야 합니다.
- 포트 번호는 서버와 클라이언트 간의 통신을 위한 문을 열어둔 것으로, 변경 가능합니다.
이 예제는 기본적인 네트워크 통신의 흐름을 보여주기 위한 것이며, 실제 상용화된 애플리케이션에서는 보안, 안정성, 확장성 등에 대한 고려가 더 필요합니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 InetAddress (0) | 2023.11.27 |
---|---|
자바 IP주소(IP address) (0) | 2023.11.27 |
자바 네트워킹(Networking) (0) | 2023.11.27 |
자바 직렬화 transient (0) | 2023.11.27 |
자바 직렬화 Serializable (0) | 2023.11.26 |