1. 자바 네트워킹의 초기 시대
- 자바가 처음 등장했던 1995년부터 2002년까지, 네트워크 프로그래밍은 상당히 복잡한 작업이었습니다.
- C 언어의 소켓 라이브러리를 기반으로 한 초기 자바의 네트워킹 API(java.net)는 객체 지향적인 인터페이스를 제공했지만, 여전히 많은 상용구 코드(boilerplate code)가 필요했습니다.
1.1 전통적인 블로킹 I/O
- 초기 자바의 네트워킹 API는 시스템 소켓 라이브러리의 블로킹 함수만을 지원했습니다.
- 다음은 전통적인 블로킹 I/O를 사용한 서버 코드의 예시입니다:
전통적인 블로킹 I/O 예시
// 서버 소켓 생성 및 포트 바인딩
ServerSocket serverSocket = new ServerSocket(portNumber);
// 클라이언트 연결 대기
Socket clientSocket = serverSocket.accept();
// 입력 스트림 설정
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
// 출력 스트림 설정 (autoFlush = true)
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String request, response;
// 클라이언트의 요청을 처리하는 메인 루프
while ((request = in.readLine()) != null) {
if ("Done".equals(request)) {
break;
}
response = processRequest(request);
out.println(response);
}