[java] 소켓 통신을 이용한 스마트 기기 간의 상호작용 구현 방법

이번에는 소켓 통신을 이용하여 스마트 기기 간의 상호작용을 구현하는 방법에 대해 알아보겠습니다.

소켓 통신이란?

소켓(Socket) 통신은 컴퓨터 네트워크 상에서 프로그램 간에 데이터를 전송하기 위한 양쪽 끝점을 말합니다. 소켓은 클라이언트-서버 모델에서 서로 통신할 때 사용되는 도구로, 소켓을 통해 데이터를 주고 받을 수 있습니다.

Java를 이용한 소켓 통신 구현

서버 구현

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9999);
            System.out.println("서버 대기 중");

            Socket socket = serverSocket.accept();
            System.out.println("클라이언트 연결됨");

            // 데이터 통신용 입출력 스트림 생성
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            String inputLine, outputLine;

            // 클라이언트로부터 메시지 수신
            while ((inputLine = in.readLine()) != null) {
                System.out.println("클라이언트로부터 받은 메시지: " + inputLine);

                // 클라이언트에게 응답 전송
                outputLine = "서버가 응답: " + inputLine;
                out.println(outputLine);
            }

            // 스트림과 소켓 닫기
            out.close();
            in.close();
            socket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

클라이언트 구현

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("127.0.0.1", 9999);

            // 데이터 통신용 입출력 스트림 생성
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            // 서버에 메시지 전송
            out.println("안녕하세요, 서버!");

            // 서버로부터 응답 수신
            String response = in.readLine();
            System.out.println("서버로부터 받은 메시지: " + response);

            // 스트림과 소켓 닫기
            out.close();
            in.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드는 Java를 사용하여 간단한 소켓 통신을 구현한 것입니다. 서버는 클라이언트의 연결을 기다리고, 클라이언트는 서버로 메시지를 전송하고 응답을 받는 형태로 동작합니다.

이를 응용하여 스마트 기기 간의 상호작용을 구현할 수 있으며, 이를 통해 각종 IoT 기기나 스마트 홈 시스템 등에서 다양한 기능을 구현할 수 있습니다.

이상으로 소켓 통신을 이용한 스마트 기기 간의 상호작용 구현 방법에 대해 알아보았습니다.