[파이썬] socket IoT 기기에서의 소켓 활용

소켓은 인터넷 프로토콜(IP) 기반 네트워크 통신을 위한 일종의 연결 지점입니다. IoT 기기에서 소켓을 이용하여 네트워크 통신을 구현할 수 있습니다. 이번 블로그에서는 소켓을 사용한 IoT 기기의 예시를 파이썬을 기반으로 소개하겠습니다.

1. Socket 라이브러리 가져오기

파이썬은 기본적으로 Socket 라이브러리를 제공합니다. 이 라이브러리를 사용하여 소켓 프로그래밍을 할 수 있습니다. 다음과 같이 라이브러리를 가져오겠습니다.

import socket

2. 소켓 생성하기

소켓을 생성하기 위해서는 socket.socket() 함수를 호출해야 합니다. 다음은 소켓을 생성하는 예시입니다.

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

# UDP 소켓 생성
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

3. 소켓에 IP 주소와 포트 할당하기

생성한 소켓에 IP 주소와 포트를 할당해야 합니다. IP 주소는 IoT 기기의 IP 주소를 사용하고, 포트는 통신을 위한 식별자로 사용됩니다. 다음은 IP 주소와 포트를 할당하는 예시입니다.

# TCP 서버에 IP 주소와 포트 할당
server_socket.bind(('0.0.0.0', 5000))

# UDP 클라이언트에 IP 주소와 포트 할당
client_socket.bind(('0.0.0.0', 5001))

4. 소켓으로 데이터 보내고 받기

생성한 소켓을 사용하여 데이터를 보내고 받을 수 있습니다. TCP 소켓을 사용할 때는 send()recv() 함수를, UDP 소켓을 사용할 때는 sendto()recvfrom() 함수를 사용합니다. 다음은 데이터를 보내고 받는 예시입니다.

# TCP 클라이언트에서 데이터 보내기
client_socket.send(b"Hello, Server!")

# TCP 서버에서 데이터 받기
data = server_socket.recv(1024)
print("Received from client:", data.decode())

# UDP 서버에서 데이터 받기
data, addr = server_socket.recvfrom(1024)
print("Received from client:", data.decode())

# UDP 클라이언트에서 데이터 보내기
client_socket.sendto(b"Hello, Server!", ('Server IP', 5000))

5. 소켓 연결 종료하기

소켓 통신이 끝난 후에는 소켓을 종료하기 위해 close() 함수를 호출해야 합니다. 다음은 소켓 연결을 종료하는 예시입니다.

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

# UDP 소켓 종료
client_socket.close()

마무리

소켓은 IoT 기기에서 네트워크 통신을 구현하는 데에 매우 유용한 도구입니다. 파이썬의 Socket 라이브러리를 사용하면 간단한 코드로 소켓을 활용할 수 있습니다. 이번 글을 통해 소켓을 활용한 IoT 기기의 개발에 도움이 되었기를 바랍니다.