같은 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 파일 내용을 출력할 수 있습니다.

+ Recent posts