728x90
반응형
메이커톤에서 라즈베리파이를 다룰 일이 생겼습니다!!
간단한 웹 서버를 만들까 하다가 제가 만들고자 하는 로직이 별로 복잡하지 않고 로드도 작아서 소켓 통신으로 만들기로 했습니다. 생각보다 코드도 굉장히 간단하고 연결하는 것도 어렵지 않습니다.
환경은 라즈베리파이(라즈비안 os), 그리고 와이파이 한개, 윈도우10 피시 한대 입니다.
먼저 사전에 두 기기가 네트워크로 연결되어 있는지 확인해봅시다.
핑 테스트가 완료 되었으면 라즈베리파이에 서버 코드를 돌려봅시다.
서버 코드
import _thread
import socket
end = 0
print("안녕하세요")
def threaded(client_socket, addr):
print('Connected by: ', addr[0], ':', addr[1])
while True:
try:
data = client_socket.recv(1024)
if not data:
print('Disconnected by ' + addr[0], ':', addr[1])
break
print('Received from ' + addr[0], ':', addr[1], data.decode())
client_socket.send(data)
except ConnectionResetError as e:
print("Disconnected by", addr[0], ':', addr[1])
print(f"e: {e}")
ip = '127.0.0.1'
port = 8080
# 소켓 초기화
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 소켓 에러처리
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((ip, port))
server_socket.listen()
print('server start')
while True:
if end == 1:
break
print("wait")
cs, addr = server_socket.accept()
_thread.start_new_thread(threaded, (cs, addr))
ip의 자리에는 라즈베리파이의 터미널에서 ifconfig 명령어로 알아낸 inet의 값이 들어갑니다.
위 이미지는 pc에서 ipconfig를 실행했을 때의 이미지입니다. 위의 이미지와 비슷하게 나옵니다.
클라이언트 코드입니다.
import socket
HOST = '127.0.0.1'
PORT = 8080
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((HOST, PORT))
while True:
message = input('Enter message :')
if message == 'quit':
break
client_socket.send(message.encode())
data = client_socket.recv(1024)
print(' Received from the server:', repr(data.decode()))
client_socket.close()
클라이언트의 HOST 값은 ipconfig의 IPv4 주소로 변경해주세요.
이제 라즈베리파이에서 python3 server.py 명령어로 서버 코드를 실행시킨 후 클라이언트 코드를 실행시켜줍니다.
결과 화면
라즈베리파이가 너무 느려서 코드 넣는데 고생했습니다 으억
보고 따라하시는 분들은 피시에서 코드를 짠 다음 테스트하고 라즈베리파이에 넣으시는걸 권장드립니다.
공감과 댓글은 블로거에게 큰 힘이 됩니다.
728x90
반응형
'Language > Python' 카테고리의 다른 글
Python 객체의 모든 속성의 키를 가져오는 방법 - dir (0) | 2024.03.19 |
---|---|
Python os.path 함수 정리 (0) | 2024.03.16 |
파이썬에서 2중 리스트를 flatten하게 만들기 (0) | 2024.03.13 |
[파이썬] 파일 압축 후 google drive api를 이용해 google drive에 업로드하기 (0) | 2020.12.08 |