[파이썬] 소켓 프로그래밍과 IoT 통신

소켓 프로그래밍 기초

소켓 프로그래밍은 컴퓨터 네트워크 상에서 데이터 통신을 위해 사용되는 기술이다. 소켓은 서버와 클라이언트 간의 통신을 가능하게 하는 소프트웨어 역할을 한다. 소켓 프로그래밍은 소켓을 생성하고 연결하고 데이터를 송수신하는 과정으로 이루어진다.

import socket

# 서버 소켓 생성
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 서버 소켓을 특정 포트에 바인딩
server_socket.bind(('localhost', 8080))

# 클라이언트의 연결을 기다림
server_socket.listen(5)

while True:
    # 클라이언트의 연결 요청 수락
    client_socket, addr = server_socket.accept()
    print('클라이언트가 접속했습니다:', addr)

    # 클라이언트로부터 데이터 수신
    data = client_socket.recv(1024)
    print('수신한 데이터:', data.decode())

    # 클라이언트에 데이터 송신
    client_socket.sendall('서버에서 보내는 메시지'.encode())

    # 클라이언트 소켓 종료
    client_socket.close()
    
# 서버 소켓 종료
server_socket.close()

위의 예시 코드는 소켓 서버를 생성하는 기본적인 과정을 보여준다. socket.socket() 함수를 호출하여 서버 소켓을 생성한 뒤, bind() 함수를 사용하여 특정 포트에 바인딩한다. 그 후 listen() 함수를 호출하여 클라이언트의 연결을 대기하고, accept() 함수를 사용하여 클라이언트의 연결 요청을 수락한다. 데이터 송수신은 recv()sendall() 함수를 사용하여 이루어진다. 마지막으로 클라이언트 소켓과 서버 소켓을 각각 종료한다.

IoT 통신과 소켓 프로그래밍

IoT(Internet of Things)는 사물인터넷을 의미하며, 다양한 기기나 장치들이 인터넷을 통해 서로 연결되어 정보를 주고받을 수 있는 기술이다. IoT 기기와의 통신은 소켓 프로그래밍을 이용하여 구현할 수 있다.

import socket

# IoT 디바이스의 IP 주소와 포트
device_ip = '192.168.0.100'
device_port = 8888

# 서버 소켓 생성
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 디바이스에 연결
server_socket.connect((device_ip, device_port))

# 서버에 데이터 송신
message = 'IoT 디바이스로부터 온 데이터'
server_socket.sendall(message.encode())

# 서버로부터 데이터 수신
data = server_socket.recv(1024)
print('수신한 데이터:', data.decode())

# 서버 소켓 종료
server_socket.close()

위의 예시 코드는 Python을 이용하여 IoT 디바이스와 통신하는 과정을 보여준다. socket.socket() 함수를 호출하여 서버 소켓을 생성한 뒤, connect() 함수를 사용하여 디바이스에 연결한다. 데이터 송수신은 sendall()recv() 함수를 사용하여 이루어진다. 마지막으로 서버 소켓을 종료한다.

마무리

소켓 프로그래밍은 컴퓨터 네트워크 상에서 데이터 통신을 위한 핵심 기술이다. IoT 기기와의 통신을 위해서도 소켓 프로그래밍을 이용할 수 있다. 이 글을 통해 소켓 프로그래밍과 IoT 통신에 대한 이해를 높이고, 실제로 코드를 작성하여 IoT 디바이스와 소통하는 경험을 쌓을 수 있다.