-
PC간 데이터 전송 - 소켓 통신analysis 2024. 12. 31. 09:59
시작하기 전에
실시간으로 FFT 하기 - 미니프로그램과 ai :: hsl's tsmaster 사용기 에서 TSMaster의 FFT 계산 결과를 소켓 통신으로 동일 PC의 FFT Visualizer 프로그램으로 전달하는 방법을 설명했다.
소켓 통신으로 서로 다른 PC의 프로그램 사이에 통신이 가능한지 확인해보았다.
개요
- 클라이언트(TSMaster 미니프로그램)쪽 코드 수정
- 서버(FFT Visualizer)쪽 코드 수정
- 실행 결과
클라이언트(TSMaster 미니프로그램)쪽 코드 수정
- FFT 계산 결과를 보내는 쪽인 TSMaster 미니프로그램이 클라이언트이다.
- FFT 계산 결과를 그래프로 표시하는 FFT Visualizer가 서버이다.
- 소켓 통신을 연결할 때, ip 주소에 FFT Visualizer가 동작하고 있는 PC의 ip 주소를 설정한다. 아래 코드 중에 self.client_socket.connect(('192.168.0.14', port)) 부분이다. 동일 PC에서 소켓 통신을 할 경우, ip 주소를 'localhost'로 설정한다.
## FFTDataSender 클래스 class FFTDataSender: def __init__(self, port=5000): self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 네트워크에 연결된 다른 PC에서 FFT visualizer를 실행하고 # 그 PC의 ip 주소를 입력하면, 그 PC에서 데이터가 표시된다. self.client_socket.connect(('192.168.0.14', port)) # 동일 PC에서 FFT 비주얼라이저를 실행할 경우 # ip 주소에 localhost라고 입력한다. # self.client_socket.connect(('localhost', port))
서버(FFT Visualizer)쪽 코드 수정
- TSMaster 미니프로그램보다 FFT Visuzlizer를 먼저 실행한다.
- FFT Visualizer가 (동일 PC의 다른 프로그램이 아닌) 네트워크를 모니터링하면서 소켓 통신을 대기할 수 있도록 ip 주소를 '0.0.0.0'으로 설정한다. 아래 코드 중에 self.server_socket.bind(('0.0.0.0', port)) 부분이다. 동일 PC에서 소켓 통신을 할 경우, ip 주소를 'localhost'로 설정한다.
class FFTVisualizer: def __init__(self, port=5000): # Socket 설정 self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 네트워크에 연결된 다른 PC에서 접속하는 경우 self.server_socket.bind(('0.0.0.0', port)) # 로컬 PC에서 접속하는 경우 # self.server_socket.bind(('localhost', port)) self.server_socket.listen(1)
실행 결과
실행은 아래 비디오에 보이는 것처럼 잘 된다.
- 서버 (우측) PC에서 FFT Visualizer를 실행한다. FFT Visualizer는 소켓으로 통신 요청이 들어오기를 대기한다.
- 클라이언트 (좌측) PC에서 TSMaster 미니프로그램을 실행한다. 소켓 통신이 연결된다.
- 클라이언트 PC에서 오프라인 리플레이 실행하여 FFT 계산을 시작한다. 서버 PC의 FFT Visualizer에 그래프가 출력된다.
- 클라이언트 PC의 미니프로그램을 종료한다. 클라이언트쪽 소켓 통신이 종료된다.
- 서버의 FFT Visualizer를 종료한다. 서보쪽 소켓 통신이 종료된다.
결론
- Python의 socket 모듈을 이용하면, 소켓 통신을 이용하여 TSMaster의 미니프로그램(클라이언트)과 네트워크에 있는 다른 PC에서 동작하는 프로그램(서버) 사이에 데이터 전달을 몇 줄의 코드 구현할 수 있다.
'analysis' 카테고리의 다른 글
시스템 변수를 로깅하는 방법 (1) 2024.12.30 Tlog100x 사용법 (0) 2024.12.27 판넬로 출력하는 방법 - 관계도 (1) 2024.10.25 제동 성능 지표 계산하기 (4) 2024.10.25 mat 파일을 데이터프레임으로 변환하고 feather 파일로 저장하기 (2) 2024.10.25