[java] 자바 소켓 프로그래밍을 이용한 원격 제어 시스템 구현

이 블로그 포스트에서는 자바 소켓 프로그래밍을 활용하여 원격 제어 시스템을 구현하는 방법에 대해 알아보겠습니다.

소켓 프로그래밍이란?

소켓 프로그래밍은 네트워크상에서 서로 다른 두 시스템 간의 통신을 가능하게 하는 프로그래밍 기술입니다. 자바에서는 java.net 패키지에 소켓 프로그래밍을 위한 클래스 및 인터페이스를 제공합니다.

원격 제어 시스템 구현하기

  1. 서버 구현
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class RemoteControlServer {
        public static void main(String[] args) {
            try {
                // 서버 소켓 생성
                ServerSocket serverSocket = new ServerSocket(8080);
    
                while (true) {
                    // 클라이언트 접속 대기
                    Socket clientSocket = serverSocket.accept();
                       
                    // 클라이언트로부터 데이터를 읽고 쓰기 위한 스트림 생성
                    InputStream inputStream = clientSocket.getInputStream();
                    OutputStream outputStream = clientSocket.getOutputStream();
    
                    // 클라이언트로 데이터 전송
                    String message = "Hello, Client!";
                    outputStream.write(message.getBytes());
    
                    // 클라이언트 소켓 닫기
                    clientSocket.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
  2. 클라이언트 구현
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class RemoteControlClient {
        public static void main(String[] args) {
            try {
                // 서버에 접속
                Socket serverSocket = new Socket("localhost", 8080);
                   
                // 서버로부터 데이터를 읽고 쓰기 위한 스트림 생성
                InputStream inputStream = serverSocket.getInputStream();
                OutputStream outputStream = serverSocket.getOutputStream();
    
                // 서버로부터 데이터 받기
                byte[] buffer = new byte[1024];
                inputStream.read(buffer);
                String message = new String(buffer).trim();
                System.out.println("Message from server: " + message);
                   
                // 서버 소켓 닫기
                serverSocket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

실행 및 결과 확인

  1. 서버 실행
    java RemoteControlServer
    
  2. 클라이언트 실행
    java RemoteControlClient
    
  3. 결과 확인 클라이언트가 서버에 접속하고 서버로부터 “Hello, Client!” 메시지를 수신한 후에 연결이 종료됩니다.

결론

이번 포스트에서는 자바 소켓 프로그래밍을 활용하여 원격 제어 시스템을 구현하는 방법에 대해 알아보았습니다. 소켓 프로그래밍은 다양한 네트워크 응용프로그램을 개발할 때 유용하게 사용될 수 있으며, 자바에서는 간편한 API를 제공하고 있습니다.