[java] 소켓 IO 스트림과 네트워크 데이터 처리 방법

소켓을 이용한 네트워크 프로그래밍에서 IO 스트림을 활용하여 데이터를 전송하고 처리하는 방법에 대해 알아보겠습니다.

소켓 IO 스트림

소켓 IO 스트림은 네트워크를 통해 데이터를 송수신하는 데 사용됩니다. 자바에서는 Socket 클래스를 사용하여 클라이언트 소켓을 생성하고, ServerSocket 클래스를 사용하여 서버 소켓을 생성합니다. 소켓을 통해 데이터를 읽고 쓰기 위해서는 InputStreamOutputStream을 사용합니다.

// 클라이언트 소켓 생성
Socket socket = new Socket("서버주소", 포트번호);

// 소켓에서 입력 및 출력 스트림 얻기
InputStream input = socket.getInputStream();
OutputStream output = socket.getOutputStream();

네트워크 데이터 처리

네트워크를 통해 전송되는 데이터는 byte 단위로 처리됩니다. 이를 문자열이나 객체 등으로 변환하여야 합니다. 주로 InputStreamReaderOutputStreamWriter 클래스를 사용하여 문자열을 읽고 쓰는 작업을 수행합니다.

// 문자열을 다루기 위한 Reader 및 Writer 생성
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(output));

데이터 전송 및 수신

네트워크를 통해 데이터를 전송하기 위해서는 write 메서드를 사용하여 출력 스트림으로 데이터를 전송하고, read 메서드를 사용하여 입력 스트림으로 데이터를 수신합니다.

// 데이터 전송
writer.println("데이터 전송 테스트");
writer.flush(); // 버퍼 비우기

// 데이터 수신
String data = reader.readLine();

위와 같이 소켓 IO 스트림을 이용하여 네트워크 데이터를 처리할 수 있습니다.

이외에도 소켓 통신에서 예외 처리, 다중 클라이언트 지원 및 보안 등에 대한 다양한 주제가 더 있습니다.

더 많은 정보를 원하신다면 공식 자바 문서나 다양한 네트워크 프로그래밍 책을 참고하시기 바랍니다.


참고: