같은 Netword상에 있어야 한다.
그리고 이런경우는 통신을 위한 socket을 열어주고 - 전용 길을 열어준다고 생각하면 된다.
이 코드는 소켓을 사용하여 1.2.3.4 IP 주소의 라즈베리파이에 연결하여 b.txt 파일을 읽어옵니다.
import socket
HOST = '1.2.3.4' # 라즈베리파이의 IP 주소
PORT = 1234 # 사용할 포트 번호
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'read_file:b.txt') # b.txt 파일 읽기 명령 전송
data = s.recv(1024) # 응답 수신
print('Received', repr(data)) # 응답 출력
이 코드를 실행하기 전에, 1.2.3.4 라즈베리파이에서 다음과 같은 서버 프로그램을 먼저 실행해야합니다. 이 프로그램은 클라이언트가 보낸 명령을 처리하고 b.txt 파일의 내용을 응답으로 보냅니다.
import socket
HOST = '0.0.0.0' # 모든 IP 주소에서 연결을 허용
PORT = 1234 # 사용할 포트 번호
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
command = data.decode('utf-8')
if command.startswith('read_file:'):
filename = command[10:]
try:
with open(filename, 'rb') as f:
contents = f.read()
conn.sendall(contents)
except FileNotFoundError:
conn.sendall(b'File not found')
위 두 코드를 각각 라즈베리파이의 다른 디렉토리에 저장하고 실행하면, 첫 번째 코드에서 1.2.3.4 라즈베리파이의 b.txt 파일 내용을 출력할 수 있습니다.
'개발자 인생' 카테고리의 다른 글
[Raspberry Pi] Raspberry Pi 웹 서버 만들기 - Apache (0) | 2023.04.19 |
---|---|
[Embedded] Orange pi 5 vs Raspberry pi 4 (0) | 2023.03.10 |